diff --git a/SAS/ResourceAssignment/OTDBtoRATaskStatusPropagator/propagator.py b/SAS/ResourceAssignment/OTDBtoRATaskStatusPropagator/propagator.py index 58b5cb7bcf4e2389b5acc6ebdacdf279fd6eae4f..ffa1a3de5ab1d00a71e9ebbaeb75a18324a802fa 100644 --- a/SAS/ResourceAssignment/OTDBtoRATaskStatusPropagator/propagator.py +++ b/SAS/ResourceAssignment/OTDBtoRATaskStatusPropagator/propagator.py @@ -59,15 +59,23 @@ class OTDBtoRATaskStatusPropagator(OTDBBusListener): try: radb_task = self.radb.getTask(otdb_id=treeId) if radb_task: - spec = self.otdb.taskGetSpecification(otdb_id=treeId)['specification'] - new_startime = spec['ObsSW.Observation.startTime'] - new_endtime = spec['ObsSW.Observation.stopTime'] - - new_startime = datetime.strptime(new_startime, ('%Y-%m-%d %H:%M:%S.%f' if '.' in new_startime else '%Y-%m-%d %H:%M:%S')) - new_endtime = datetime.strptime(new_endtime, ('%Y-%m-%d %H:%M:%S.%f' if '.' in new_endtime else '%Y-%m-%d %H:%M:%S')) - - logger.info("Updating task (otdb_id=%s, radb_id=%s, status=%s) startime to \'%s\' and endtime to \'%s\'", treeId, radb_task['id'], radb_task['status'], new_startime, new_endtime) - self.radb.updateTaskAndResourceClaims(radb_task['id'], starttime=new_startime, endtime=new_endtime) + # all CEP4 tasks have storage claim(s) + # and we do not want OTDB to update our RA scheduled tasks + # so check if we have storage claims + claims = self.radb.getResourceClaims(task_ids=radb_task['id'], resource_type='storage') + + if not claims: + #this is a CEP2 task, modified by the old scheduler + #update start/stop time + spec = self.otdb.taskGetSpecification(otdb_id=treeId)['specification'] + new_startime = spec['ObsSW.Observation.startTime'] + new_endtime = spec['ObsSW.Observation.stopTime'] + + new_startime = datetime.strptime(new_startime, ('%Y-%m-%d %H:%M:%S.%f' if '.' in new_startime else '%Y-%m-%d %H:%M:%S')) + new_endtime = datetime.strptime(new_endtime, ('%Y-%m-%d %H:%M:%S.%f' if '.' in new_endtime else '%Y-%m-%d %H:%M:%S')) + + logger.info("Updating task (otdb_id=%s, radb_id=%s, status=%s) startime to \'%s\' and endtime to \'%s\'", treeId, radb_task['id'], radb_task['status'], new_startime, new_endtime) + self.radb.updateTaskAndResourceClaims(radb_task['id'], starttime=new_startime, endtime=new_endtime) except Exception as e: logger.error(e)