From ed1d1549ef2ed8d526af7e550348992cbbff112d Mon Sep 17 00:00:00 2001
From: Jorrit Schaap <schaap@astron.nl>
Date: Tue, 12 Apr 2016 13:16:54 +0000
Subject: [PATCH] Task #8887: check storageClusterName keys for CEP4  before
 accepting specification

---
 .../ResourceAssigner/lib/assignment.py        | 23 +++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py b/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py
index 59b34d4d683..367e1bef582 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)
-- 
GitLab