diff --git a/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py b/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py index 59b34d4d683edc46cd3e265eb8d097b50838d43b..367e1bef582ece37fb315ca0512e17d7f51a45e2 100755 --- a/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py +++ b/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py @@ -110,6 +110,10 @@ class ResourceAssigner(): #parse main parset... mainParset = parameterset(specification_tree['specification']) + + if not self.checkCluster(mainParset): + return + momId = mainParset.getInt('Observation.momID', -1) startTime = datetime.strptime(mainParset.getString('Observation.startTime'), '%Y-%m-%d %H:%M:%S') endTime = datetime.strptime(mainParset.getString('Observation.stopTime'), '%Y-%m-%d %H:%M:%S') @@ -182,6 +186,25 @@ class ResourceAssigner(): except Exception as e: logger.error(e) + def checkCluster(self, parset): + # check storageClusterName for enabled DataProducts + # if any storageClusterName is not CEP4, we do not accept this parset + keys = ['Output_Correlated', + 'Output_IncoherentStokes', + 'Output_CoherentStokes', + 'Output_InstrumentModel', + 'Output_SkyImage', + 'Output_Pulsar'] + for key in keys: + if parset.getBool('Observation.DataProducts.%s.enabled' % key, False): + if parset.getString('Observation.DataProducts.%s.storageClusterName' % key, '') != 'CEP4': + logger.warn("storageClusterName not CEP4, rejecting specification.") + return False + + logger.info("all enabled storageClusterName's are CEP4, accepting specification.") + return True + + def getNeededResouces(self, specification_tree): replymessage, status = self.rerpc({"specification_tree":specification_tree}, timeout=10) logger.info('getNeededResouces: %s' % replymessage)