Skip to content
Snippets Groups Projects
Commit c6be99cd authored by Jorrit Schaap's avatar Jorrit Schaap
Browse files

Task #8887: updateResourceAvailability

parent f2df1e90
No related branches found
No related tags found
No related merge requests found
......@@ -466,6 +466,33 @@ class RADatabase:
return list(self._executeQuery(query, qargs, fetch=_FETCH_ALL))
def updateResourceAvailability(self, resource_id, active=None, available_capacity=None, total_capacity=None, commit=True):
if active is not None:
query = '''UPDATE resource_monitoring.resource_availability
SET (available) = (%s)
WHERE resource_id = %s;'''
self._executeQuery(query, (active, resource_id))
if available_capacity is not None and total_capacity is not None:
query = '''UPDATE resource_monitoring.resource_capacity
SET (available, total) = (%s, %s)
WHERE resource_id = %s;'''
self._executeQuery(query, (available_capacity, total_capacity, resource_id))
elif available_capacity is not None:
query = '''UPDATE resource_monitoring.resource_capacity
SET (available) = (%s)
WHERE resource_id = %s;'''
self._executeQuery(query, (available_capacity, resource_id))
elif total_capacity is not None:
query = '''UPDATE resource_monitoring.resource_capacity
SET (total) = (%s)
WHERE resource_id = %s;'''
self._executeQuery(query, (total_capacity, resource_id))
if commit:
self.commit()
def getResourceGroups(self):
query = '''SELECT rg.*, rgt.name as type
from virtual_instrument.resource_group rg
......
......@@ -118,6 +118,13 @@ class RARPC(RPCWrapper):
def getResources(self, resource_types=None, include_availability=False):
return self.rpc('GetResources', resource_types=resource_types, include_availability=include_availability)
def updateResourceAvailability(self, resource_id, active=None, available_capacity=None, total_capacity=None):
return self.rpc('UpdateResourceAvailability',
resource_id=resource_id,
active=active,
available_capacity=available_capacity,
total_capacity=total_capacity)
def getTask(self, id=None, mom_id=None, otdb_id=None):
'''get a task for either the given (task)id, or for the given mom_id, or for the given otdb_id'''
task = self.rpc('GetTask', id=id, mom_id=mom_id, otdb_id=otdb_id)
......
......@@ -54,6 +54,7 @@ class RADBHandler(MessageHandlerInterface):
'GetResourceGroupMemberships': self._getResourceGroupMemberships,
'GetResourceTypes': self._getResourceTypes,
'GetResources': self._getResources,
'UpdateResourceAvailability': self._updateResourceAvailability,
'GetTasks': self._getTasks,
'GetTask': self._getTask,
'InsertTask': self._insertTask,
......@@ -194,6 +195,12 @@ class RADBHandler(MessageHandlerInterface):
return self.radb.getResources(resource_types=kwargs.get('resource_types'),
include_availability=kwargs.get('include_availability', False))
def _updateResourceAvailability(self, **kwargs):
return self.radb.updateResourceAvailability(resource_id=kwargs['resource_id'],
active=kwargs.get('active'),
available_capacity=kwargs.get('available_capacity'),
total_capacity=kwargs.get('total_capacity'))
def _getTasks(self):
return self.radb.getTasks()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment