From 3f3ba062e26e48c80e1b221222efedfdbdae304f Mon Sep 17 00:00:00 2001 From: Alexander van Amesfoort <amesfoort@astron.nl> Date: Tue, 21 Feb 2017 21:48:22 +0000 Subject: [PATCH] Task #9939: add RADB RPC getResourceAllocationConfig() to be able to apply max fill ratios in Resource Assigner --- .../ResourceAssignmentDatabase/radb.py | 11 +++++++++++ .../ResourceAssignmentService/rpc.py | 5 +++++ .../ResourceAssignmentService/service.py | 11 ++++++++--- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py index 0fa41e71630..046ea95a01b 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py +++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py @@ -1616,6 +1616,16 @@ class RADatabase: return all_usages_list + def getResourceAllocationConfig(self, sql_like_name_pattern=None): + ''' The argument sql_like_name_pattern is e.g. 'max_fill_ratio%' + ''' + query = "SELECT name, value FROM resource_allocation.config" + if sql_like_name_pattern is not None: + query += " WHERE name LIKE '%s'" % sql_like_name_pattern + + return list(self._executeQuery(query, fetch=_FETCH_ALL)) + + if __name__ == '__main__': logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.INFO) @@ -1658,4 +1668,5 @@ if __name__ == '__main__': resultPrint(db.getSpecifications) resultPrint(db.getResourceClaims) resultPrint(db.getResourceClaimProperties) + resultPrint(db.getResourceAllocationConfig) diff --git a/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py b/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py index 57ecfa458d8..13f7647a7a3 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py +++ b/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py @@ -271,6 +271,10 @@ class RARPC(RPCWrapper): def getUnits(self): return self.rpc('GetUnits') + def getResourceAllocationConfig(self, sql_like_name_pattern=None): + return self.rpc('GetResourceAllocationConfig', + sql_like_name_pattern=sql_like_name_pattern) + def do_tests(busname=DEFAULT_BUSNAME, servicename=DEFAULT_SERVICENAME): with RARPC(busname=busname, servicename=servicename) as rpc: #for i in range(0, 10): @@ -316,6 +320,7 @@ def do_tests(busname=DEFAULT_BUSNAME, servicename=DEFAULT_SERVICENAME): #print rpc.getTasks() #print rpc.getResourceClaims() + #print rpc.getResourceAllocationConfig() diff --git a/SAS/ResourceAssignment/ResourceAssignmentService/service.py b/SAS/ResourceAssignment/ResourceAssignmentService/service.py index 6eb039ebc2d..c8c5b470264 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentService/service.py +++ b/SAS/ResourceAssignment/ResourceAssignmentService/service.py @@ -76,7 +76,8 @@ class RADBHandler(MessageHandlerInterface): 'InsertSpecification': self._insertSpecification, 'DeleteSpecification': self._deleteSpecification, 'UpdateSpecification': self._updateSpecification, - 'GetUnits': self._getUnits} + 'GetUnits': self._getUnits, + 'GetResourceAllocationConfig': self._getResourceAllocationConfig} def prepare_loop(self): self.radb = radb.RADatabase(dbcreds=self.dbcreds, log_queries=self.log_queries) @@ -194,8 +195,8 @@ class RADBHandler(MessageHandlerInterface): def _getResourceGroups(self): return self.radb.getResourceGroups() - def _getResourceGroupNames(self, resourceGroupTypeName): - return self.radb.getResourceGroupNames(resourceGroupTypeName) + def _getResourceGroupNames(self, **kwargs): + return self.radb.getResourceGroupNames(resourceGroupTypeName=kwargs.get('resourceGroupTypeName')) def _getResourceGroupMemberships(self): rg_memberships = self.radb.getResourceGroupMemberships() @@ -335,6 +336,10 @@ class RADBHandler(MessageHandlerInterface): def _getUnits(self): return self.radb.getUnits() + def _getResourceAllocationConfig(self, **kwargs): + return self.radb.getResourceAllocationConfig(sql_like_name_pattern=kwargs.get('sql_like_name_pattern')) + + def createService(busname=DEFAULT_BUSNAME, servicename=DEFAULT_SERVICENAME, broker=None, dbcreds=None, log_queries=False, verbose=False): return Service(servicename, RADBHandler, -- GitLab