diff --git a/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/propagator.py b/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/propagator.py index 7856df6c9626287a5af3318365348f4447b0eddd..9da356be4801df7b4ce4492b6281091b3a0c0d20 100755 --- a/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/propagator.py +++ b/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/propagator.py @@ -151,7 +151,7 @@ class RAtoOTDBPropagator(): def ParseStorageProperties(self, storage_claim): """input something like: - {u'username':u'anonymous', u'status': u'allocated', u'resource_name': + {u'username':u'anonymous', u'status': u'claimed', u'resource_name': u'CEP4_storage:/data', u'user_id': -1, u'resource_type_id': 5, u'task_id': 6349, u'status_id': 1, u'resource_id': 117, u'session_id': 1, u'id': 339, u'claim_size': 24000, u'starttime': datetime.datetime(2016, 6, 10, 16, 8, 15), diff --git a/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py b/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py index a03295e59ea78cd84ce1451fe27522d10444c77e..27ef796564b95dd3d733c487cf19cba8087127d5 100755 --- a/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py +++ b/SAS/ResourceAssignment/ResourceAssigner/lib/assignment.py @@ -134,9 +134,13 @@ class ResourceAssigner(): logger.info('doAssignment: specification_tree=%s' % (specification_tree)) otdb_id = specification_tree['otdb_id'] + + assignable_task_states = ['approved', 'prescheduled'] status = specification_tree.get('state', '').lower() - if status not in ['approved', 'prescheduled']: # For approved we only do a few checks and put it in the RADB - logger.warn('skipping specification for task otdb_id=%s, because status=%s (not prescheduled)', otdb_id, status) + if status not in assignable_task_states: + assignable_task_states_str = ', '.join(assignable_task_states) + logger.warn('skipping specification for task otdb_id=%s, because status=%s (not one of %s)', otdb_id, + status, assignable_task_states_str) return try: @@ -338,8 +342,8 @@ class ResourceAssigner(): raise Exception('doAssignment: Task cannot be scheduled, because of %d conflicting claims: %s' % (len(conflictingClaims), conflictingClaims)) - logger.info('doAssignment: all resources for task %s were succesfully claimed. Setting claim statuses to allocated' % (taskId,)) - self.radbrpc.updateTaskAndResourceClaims(taskId, claim_status='allocated') + logger.info('doAssignment: all resources for task %s were succesfully claimed. Setting claim statuses to claimed' % (taskId,)) + self.radbrpc.updateTaskAndResourceClaims(taskId, claim_status='claimed') except Exception as e: logger.error(str(e)) self._sendStateChange(task, 'conflict') @@ -587,8 +591,8 @@ class ResourceAssigner(): ignore_type_ids=[db_rcu_type_id]) if is_claimable: - claim = self.makeClaim(db_resource_prop_types, db_storage_type_id, db_rcu_type_id, task, - properties, needed_resources_by_type_id, claimable_resources_dict) + claim = self.makeTentativeClaim(db_resource_prop_types, db_storage_type_id, db_rcu_type_id, task, + properties, needed_resources_by_type_id, claimable_resources_dict) logger.debug('getClaimsForTask: created claim: %s', claim) claims.extend(claim) break @@ -664,8 +668,8 @@ class ResourceAssigner(): return is_claimable - def makeClaim(self, db_resource_prop_types, db_storage_type_id, db_rcu_type_id, task, properties, - needed_resources, claimable_resources): + def makeTentativeClaim(self, db_resource_prop_types, db_storage_type_id, db_rcu_type_id, task, properties, + needed_resources, claimable_resources): """ Returns list of claims for a data product (one for each needed resource type). Note: this function also updates claimable_resources. Format needed_resources: {resource_type_id: size, ...} @@ -674,7 +678,7 @@ class ResourceAssigner(): claims = [] for res_type, claim_size in needed_resources.items(): - claim = {'starttime': task['starttime'], 'endtime': task['endtime'], 'status': 'claimed'} + claim = {'starttime': task['starttime'], 'endtime': task['endtime'], 'status': 'tentative'} claim['resource_id'] = claimable_resources[res_type]['id'] # RCU claim size as returned by the ResourceEstimator is actually a bit pattern (encoding which of a @@ -693,7 +697,7 @@ class ResourceAssigner(): if res_type == db_storage_type_id: # FIXME: find proper way to extend storage time with a year - # 2016-09-27 scisup would like to be involved in chosing these kind of defaults + # 2016-09-27 scisup would like to be involved in choosing these kind of defaults # and what to do after the claim expires # we now choose a default period of a year, and do nothing if the claim expires claim['endtime'] += timedelta(days=365) diff --git a/SAS/ResourceAssignment/ResourceAssigner/test/t_resourceassigner.py b/SAS/ResourceAssignment/ResourceAssigner/test/t_resourceassigner.py index 9fae3f23edb2d186a67ae290378ab947836f9627..201b07c58c30c921dce747ffd57308757db330f0 100755 --- a/SAS/ResourceAssignment/ResourceAssigner/test/t_resourceassigner.py +++ b/SAS/ResourceAssignment/ResourceAssigner/test/t_resourceassigner.py @@ -319,7 +319,7 @@ class ResourceAssignerTest(unittest.TestCase): 'starttime': task_start_time, 'used_rcus': None, 'endtime': task_end_time + datetime.timedelta(days=365), - 'status': 'claimed', + 'status': 'tentative', 'claim_size': rerpc_needed_claim_for_storage_size, 'properties': [ {'io_type': 'output', 'type': 15, 'sap_nr': 0, 'value': 0}, @@ -333,7 +333,7 @@ class ResourceAssignerTest(unittest.TestCase): 'starttime': task_start_time, 'used_rcus': None, 'endtime': task_end_time, - 'status': 'claimed', + 'status': 'tentative', 'claim_size': rerpc_needed_claim_for_bandwidth_size } @@ -1608,9 +1608,11 @@ class ResourceAssignerTest(unittest.TestCase): def test_do_assignment_log_non_approved_or_prescheduled_states(self): self.resourceAssigner.doAssignment(self.non_approved_or_prescheduled_specification_tree) + assignable_task_states_str = "approved, prescheduled" self.logger_mock.warn.assert_any_call( - 'skipping specification for task otdb_id=%s, because status=%s (not prescheduled)', - self.non_approved_or_prescheduled_otdb_id, self.non_approved_or_prescheduled_status) + 'skipping specification for task otdb_id=%s, because status=%s (not one of %s)', + self.non_approved_or_prescheduled_otdb_id, self.non_approved_or_prescheduled_status, + assignable_task_states_str) def test_do_assignment_non_approved_or_prescheduled_states_should_be_skipped(self): self.resourceAssigner.doAssignment(self.non_approved_or_prescheduled_specification_tree) @@ -1955,7 +1957,7 @@ class ResourceAssignerTest(unittest.TestCase): def test_do_assignment_logs_amount_of_claims_inserted_in_radb(self): self.resourceAssigner.doAssignment(self.specification_tree) - storage_claim = {'status': 'claimed', 'resource_id': 117, 'claim_size': 2, + storage_claim = {'status': 'tentative', 'resource_id': 117, 'claim_size': 2, 'starttime': datetime.datetime(2016, 3, 25, 21, 47, 31), 'used_rcus': None, 'endtime': datetime.datetime(2017, 3, 25, 22, 47, 31), @@ -1983,7 +1985,7 @@ class ResourceAssignerTest(unittest.TestCase): 'starttime': self.task_start_time, 'used_rcus': None, 'endtime': self.task_end_time, - 'status': 'claimed', + 'status': 'tentative', 'used_rcus': used_rcus, 'claim_size': used_rcus.count('1') } @@ -2067,13 +2069,13 @@ class ResourceAssignerTest(unittest.TestCase): self.resourceAssigner.doAssignment(self.specification_tree) self.logger_mock.info.assert_any_call( - 'doAssignment: all resources for task %s were succesfully claimed. Setting claim statuses to allocated' % + 'doAssignment: all resources for task %s were succesfully claimed. Setting claim statuses to claimed' % self.task_id) def test_do_assignment_updates_task_and_resources_as_claimed_in_radb(self): self.resourceAssigner.doAssignment(self.specification_tree) - self.rarpc_mock.updateTaskAndResourceClaims.assert_any_call(self.task_id, claim_status='allocated') + self.rarpc_mock.updateTaskAndResourceClaims.assert_any_call(self.task_id, claim_status='claimed') def test_do_assignment_logs_task_data_removal_if_task_is_pipeline(self): self.sqrpc_mock.getDiskUsageForOTDBId.return_value = {'found': True, 'disk_usage': 10} diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py index 0f831abe5d1e78012b2cdb3cdbdf552f974d4804..c5ffee4149f67c6a3206d49651a96cda8da298f6 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py +++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py @@ -1358,14 +1358,14 @@ class RADatabase: logger.info("validating status of %d resource claim(s) for task_id(s) %s" % (len(claims), to_csv_string(task_ids))) - # cache status_id's for conflift and claimed + # cache status_id's for conflict and tentative claimsStatuses = self.getResourceClaimStatuses() conflistStatusId = next(cs['id'] for cs in claimsStatuses if cs['name'] == 'conflict') + tentativeStatusId = next(cs['id'] for cs in claimsStatuses if cs['name'] == 'tentative') claimedStatusId = next(cs['id'] for cs in claimsStatuses if cs['name'] == 'claimed') - allocatedStatusId = next(cs['id'] for cs in claimsStatuses if cs['name'] == 'allocated') # 'result' dict for new statuses for claims - newClaimStatuses = {conflistStatusId:[], claimedStatusId:[]} + newClaimStatuses = {conflistStatusId: [], tentativeStatusId: []} #get all resources including availability #convert to id->resource dict @@ -1406,8 +1406,8 @@ class RADatabase: #logger.info("totalOtherClaimSize (%s) + claimSize (%s) >= resource_available_capacity %s for claim %s on resource %s %s for task %s", #totalOtherClaimSize, claimSize, resource['available_capacity'], claim_id, resource_id, resource['name'], task_id) #newClaimStatuses[conflistStatusId].append(claim_id) - #elif claim['status_id'] != allocatedStatusId: - #newClaimStatuses[claimedStatusId].append(claim_id) + #elif claim['status_id'] != claimedStatusId: + #newClaimStatuses[tentativeStatusId].append(claim_id) if newClaimStatuses: for status_id, claim_ids in newClaimStatuses.items(): diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_functions_and_triggers.sql b/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_functions_and_triggers.sql index c27bb9cd8d2a623b0a1ce863cbc929a24573e306..cd48ab4aa09e2aacf3294d09c025693d61a9ad8f 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_functions_and_triggers.sql +++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_functions_and_triggers.sql @@ -464,12 +464,12 @@ CREATE OR REPLACE FUNCTION resource_monitoring.get_resource_claimable_capacity_b RETURNS bigint AS $$ DECLARE - allocated_status_id int := 1; --beware: hard coded instead of lookup for performance + claimed_status_id int := 1; --beware: hard coded instead of lookup for performance max_resource_usage resource_monitoring.resource_usage; max_resource_usage_value int; available_capacity bigint; BEGIN - SELECT * FROM resource_monitoring.get_max_resource_usage_between(_resource_id, allocated_status_id, _lower, _upper) INTO max_resource_usage; + SELECT * FROM resource_monitoring.get_max_resource_usage_between(_resource_id, claimed_status_id, _lower, _upper) INTO max_resource_usage; IF max_resource_usage IS NULL THEN max_resource_usage_value := 0; @@ -494,12 +494,12 @@ CREATE OR REPLACE FUNCTION resource_monitoring.check_new_claim_for_conflicts(new RETURNS void AS $$ DECLARE -claimed_status_id int := 0; --beware: hard coded instead of lookup for performance +tentative_status_id int := 0; --beware: hard coded instead of lookup for performance conflict_status_id int := 2; --beware: hard coded instead of lookup for performance free_claimable_capacity bigint; BEGIN - --only check claimes in claimed status - IF new_claim.status_id = claimed_status_id THEN + --only check claims in tentative status + IF new_claim.status_id = tentative_status_id THEN -- get the free free_claimable_capacity for this resource for this claim's time window SELECT * FROM resource_monitoring.get_resource_claimable_capacity_between(new_claim.resource_id, new_claim.starttime, new_claim.endtime) INTO free_claimable_capacity; @@ -564,10 +564,10 @@ CREATE OR REPLACE FUNCTION resource_monitoring.before_claim_insertupdatedelete() RETURNS trigger AS $BODY$ DECLARE - claimed_status_id int := 0; --beware: hard coded instead of lookup for performance + tentative_status_id int := 0; --beware: hard coded instead of lookup for performance BEGIN - IF NEW.status_id != claimed_status_id THEN - RAISE EXCEPTION 'newly inserted claims should not have status other than claimed; claim: %', NEW; + IF NEW.status_id != tentative_status_id THEN + RAISE EXCEPTION 'newly inserted claims should not have status other than tentative; claim: %', NEW; END IF; RETURN NEW; END; diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_resource_allocation_statics.sql b/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_resource_allocation_statics.sql index 28d92092c1f15a1c095aa06f3a602c77b23c1a69..9031269c24df3efc0884de2dd445e8e455ae63af 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_resource_allocation_statics.sql +++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_resource_allocation_statics.sql @@ -6,7 +6,7 @@ INSERT INTO resource_allocation.task_status VALUES (200, 'prepared'), (300, 'app (350, 'prescheduled'), (400, 'scheduled'), (500, 'queued'), (600, 'active'), (900, 'completing'), (1000, 'finished'), (1100, 'aborted'), (1150, 'error'), (1200, 'obsolete'); -- This is the list from OTDB, we'll need to merge it with the list from MoM in the future, might use different indexes? INSERT INTO resource_allocation.task_type VALUES (0, 'observation'),(1, 'pipeline'),(2, 'reservation'); -- We'll need more types -INSERT INTO resource_allocation.resource_claim_status VALUES (0, 'claimed'), (1, 'allocated'), (2, 'conflict'); +INSERT INTO resource_allocation.resource_claim_status VALUES (0, 'tentative'), (1, 'claimed'), (2, 'conflict'); INSERT INTO resource_allocation.resource_claim_property_type VALUES (0, 'nr_of_is_files'),(1, 'nr_of_cs_files'),(2, 'nr_of_uv_files'),(3, 'nr_of_im_files'),(4, 'nr_of_img_files'),(5, 'nr_of_pulp_files'),(6, 'nr_of_cs_stokes'),(7, 'nr_of_is_stokes'),(8, 'is_file_size'),(9, 'cs_file_size'),(10, 'uv_file_size'),(11, 'im_file_size'),(12, 'img_file_size'),(13, 'nr_of_pulp_files'),(14, 'nr_of_cs_parts'),(15, 'start_sb_nr'),(16,'uv_otdb_id'),(17,'cs_otdb_id'),(18,'is_otdb_id'),(19,'im_otdb_id'),(20,'img_otdb_id'),(21,'pulp_otdb_id'),(22, 'is_tab_nr'),(23, 'start_sbg_nr'),(24, 'pulp_file_size'); INSERT INTO resource_allocation.resource_claim_property_io_type VALUES (0, 'output'),(1, 'input'); INSERT INTO resource_allocation.config VALUES (0, 'max_fill_ratio_CEP4_storage', '0.85'), (1, 'claim_timeout', '172800'), (2, 'min_inter_task_delay', '60'), (3, 'max_fill_ratio_CEP4_bandwidth', '0.75'); -- Just some values 172800 is two days in seconds diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/fill_database.sql b/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/fill_database.sql index be1e21bca93bf916ff56e0f87a9e5ec5f8dc2eff..b4c49d30efad6b84bc7bc04a77a413ea1d0c6b9f 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/fill_database.sql +++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/tests/fill_database.sql @@ -15,7 +15,7 @@ INSERT INTO resource_allocation.specification VALUES (0, '2015-11-05 12:00:00', INSERT INTO resource_allocation.task VALUES (0, 654321, 12345, 0, 0, 0),(1, 765432, 2654321, 1, 1, 1); INSERT INTO resource_allocation.claim_session VALUES (0, 'renting', 0, '2015-11-05 12:00:00', 'renting-token'), (1, 'paulus', 1, '2015-11-05 14:00:00', 'paulus-token'); -INSERT INTO resource_allocation.resource_claim_status VALUES (0, 'CLAIMED'),(1, 'ALLOCATED'); +INSERT INTO resource_allocation.resource_claim_status VALUES (0, 'TENTATIVE'),(1, 'CLAIMED'); INSERT INTO resource_allocation.resource_claim VALUES (0, 0, 0, '2015-11-05 12:00:00', '2015-11-05 12:30:00', 0, 0, 1), (1, 2, 1, '2015-11-05 13:00:00', '2015-11-05 14:00:00', 1, 1, 1234); INSERT INTO resource_monitoring.resource_capacity VALUES (0, 0, 1, 1), (1, 1, 1,1 ), (2, 2, 15000, 100000); diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/fakedata.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/fakedata.py index 052ce4fd1c4f2284da499cb9d05e546a43bfa013..9b45c712f59cacc9c13217595920f39483f52652 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/fakedata.py +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/fakedata.py @@ -128,15 +128,15 @@ for task in tasks.values(): taskResources = ingestnodes for resource in taskResources: - claim = {'id': len(resourceClaims), 'resourceId': resource['id'], 'taskId': task['id'], 'startTime': task['from'], 'endTime': task['to'], 'status': 'allocated'} + claim = {'id': len(resourceClaims), 'resourceId': resource['id'], 'taskId': task['id'], 'startTime': task['from'], 'endTime': task['to'], 'status': 'claimed'} resourceClaims.append(claim) groupIds = [rg['id'] for rg in resourceGroups if resource['id'] in rg['resourceIds']] taskResourceGroupIds |= set(groupIds) - claim = {'id': len(resourceClaims), 'resourceId': cep4storage['id'], 'taskId': task['id'], 'startTime': task['from'], 'endTime': task['from'] + timedelta(days=1), 'status': 'allocated'} + claim = {'id': len(resourceClaims), 'resourceId': cep4storage['id'], 'taskId': task['id'], 'startTime': task['from'], 'endTime': task['from'] + timedelta(days=1), 'status': 'claimed'} resourceClaims.append(claim) for groupId in taskResourceGroupIds: - groupClaim = {'id': len(resourceGroupClaims), 'resourceGroupId': groupId, 'taskId': task['id'], 'startTime': task['from'], 'endTime': task['to'], 'status': 'allocated'} + groupClaim = {'id': len(resourceGroupClaims), 'resourceGroupId': groupId, 'taskId': task['id'], 'startTime': task['from'], 'endTime': task['to'], 'status': 'claimed'} resourceGroupClaims.append(groupClaim) diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/chartresourceusagecontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/chartresourceusagecontroller.js index 72f4e2208f7e616babd207191cb8346e33b6d213..03aa1cc172b6e3d51d261bd1d437fd8bde094169 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/chartresourceusagecontroller.js +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/chartresourceusagecontroller.js @@ -149,7 +149,7 @@ chartResourceUsageControllerMod.controller('ChartResourceUsageController', ['$sc // loop again over the usages for this resource // loop in predefined status order, so the chart's series are stacked in the correct order - for(var status of ['conflict', 'claimed', 'allocated']) { + for(var status of ['conflict', 'tentative', 'claimed']) { if(!status_usages.hasOwnProperty(status)) continue; @@ -192,9 +192,9 @@ chartResourceUsageControllerMod.controller('ChartResourceUsageController', ['$sc series.data = usage_data; switch(status) { - case 'claimed': series.color = '#ffa64d'; break; case 'conflict': series.color = '#ff0000'; break; - case 'allocated': series.color = '#66ff66'; break; + case 'tentative': series.color = '#ffa64d'; break; + case 'claimed': series.color = '#66ff66'; break; } } diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js index 25a0fbb1b927295a271afd81b74945e4d0d6b761..1b49358d699cb17cca039e8ad172c1719d212836 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js @@ -129,9 +129,9 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http, return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hourMod*Math.ceil(date.getHours()/hourMod), minMod*Math.ceil(date.getMinutes()/minMod)); }; - self.resourceClaimStatusColors = {'claimed':'#ffa64d', + self.resourceClaimStatusColors = {'tentative':'#ffa64d', + 'claimed': '#66ff66', 'conflict':'#ff0000', - 'allocated': '#66ff66', 'mixed': '#bfbfbf'} self.taskStatusColors = {'prepared':'#cccccc', diff --git a/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py b/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py index 615e62ecde3d3afea7073c9702e160c59a2c2a0d..b596f3099531421f3e629afcfe900b56af0ff3a3 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py +++ b/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py @@ -288,9 +288,9 @@ def do_tests(busname=DEFAULT_BUSNAME, servicename=DEFAULT_SERVICENAME): with RARPC(busname=busname, servicename=servicename) as rpc: #for i in range(0, 10): #taskId = rpc.insertTask(1234, 5678, 'active', 'OBSERVATION', 1)['id'] - #rcId = rpc.insertResourceClaim(1, taskId, datetime.datetime.utcnow(), datetime.datetime.utcnow() + datetime.timedelta(hours=1), 'CLAIMED', 1, 10, 'einstein', -1)['id'] + #rcId = rpc.insertResourceClaim(1, taskId, datetime.datetime.utcnow(), datetime.datetime.utcnow() + datetime.timedelta(hours=1), 'TENTATIVE', 1, 10, 'einstein', -1)['id'] #print rpc.getResourceClaim(rcId) - #rpc.updateResourceClaim(rcId, starttime=datetime.datetime.utcnow(), endtime=datetime.datetime.utcnow() + datetime.timedelta(hours=2), status='ALLOCATED') + #rpc.updateResourceClaim(rcId, starttime=datetime.datetime.utcnow(), endtime=datetime.datetime.utcnow() + datetime.timedelta(hours=2), status='CLAIMED') #print rpc.getResourceClaim(rcId) #print @@ -298,7 +298,7 @@ def do_tests(busname=DEFAULT_BUSNAME, servicename=DEFAULT_SERVICENAME): #for t in tasks: #print rpc.getTask(t['id']) #for i in range(4,9): - #rcId = rpc.insertResourceClaim(i, t['id'], datetime.datetime.utcnow(), datetime.datetime.utcnow() + datetime.timedelta(hours=1), 'CLAIMED', 1, 10, 'einstein', -1)['id'] + #rcId = rpc.insertResourceClaim(i, t['id'], datetime.datetime.utcnow(), datetime.datetime.utcnow() + datetime.timedelta(hours=1), 'TENTATIVE', 1, 10, 'einstein', -1)['id'] ##print rpc.deleteTask(t['id']) ##print rpc.getTasks() ##print rpc.getResourceClaims() diff --git a/SAS/ResourceAssignment/ResourceAssignmentService/test/test_ra_service_and_rpc.py b/SAS/ResourceAssignment/ResourceAssignmentService/test/test_ra_service_and_rpc.py index 38bdf4662fd548655c37c2b2756ceb818803f77d..2ccc13ec8f6cb5aac1aafb8d58e2e626e8eaf381 100755 --- a/SAS/ResourceAssignment/ResourceAssignmentService/test/test_ra_service_and_rpc.py +++ b/SAS/ResourceAssignment/ResourceAssignmentService/test/test_ra_service_and_rpc.py @@ -48,7 +48,7 @@ try: # modify the return values of the various RADatabase methods with pre-cooked answers mock.getTaskStatuses.return_value = [{'id': 1, 'name': 'opened'}, {'id': 2, 'name': 'scheduled'}] mock.getTaskTypes.return_value = [{'id': 0, 'name': 'OBSERVATION'}, {'id': 1, 'name': 'PIPELINE'}] - mock.getResourceClaimStatuses.return_value = [{'id': 0, 'name': 'CLAIMED'},{'id': 1, 'name': 'ALLOCATED'},{'id': 2, 'name': 'CONFLICT'}] + mock.getResourceClaimStatuses.return_value = [{'id': 0, 'name': 'TENTATIVE'},{'id': 1, 'name': 'CLAIMED'},{'id': 2, 'name': 'CONFLICT'}] mock.getUnits.return_value = [{'units': 'rsp_channel_bit', 'id': 0},{'units': 'bytes', 'id': 1},{'units': 'rcu_board', 'id': 2},{'units': 'bits/second', 'id': 3},{'units': 'cores', 'id': 4}] mock.getResourceTypes.return_value = [{'unit_id': 0, 'id': 0, 'unit': 'rsp_channel_bit', 'name': 'rsp'},{'unit_id': 1, 'id': 1, 'unit': 'bytes', 'name': 'tbb'},{'unit_id': 2, 'id': 2, 'unit': 'rcu_board', 'name': 'rcu'},{'unit_id': 3, 'id': 3, 'unit': 'bits/second', 'name': 'bandwidth'},{'unit_id': 4, 'id': 4, 'unit': 'cores', 'name': 'processor'},{'unit_id': 1, 'id': 5, 'unit': 'bytes', 'name': 'storage'}] mock.getResourceGroupTypes.return_value = [{'id': 0, 'name': 'instrument'},{'id': 1, 'name': 'cluster'},{'id': 2, 'name': 'station_group'},{'id': 3, 'name': 'station'},{'id': 4, 'name': 'node_group'},{'id': 5, 'name': 'node'}] @@ -57,7 +57,7 @@ try: mock.getTasks.return_value = [{'status': 'prepared', 'type_id': 1, 'status_id': 200, 'specification_id': 1, 'starttime': datetime.datetime(2015, 11, 30, 12, 0), 'mom_id': -1, 'endtime': datetime.datetime(2015, 11, 30, 15, 0), 'type': 'PIPELINE', 'id': 5, 'otdb_id': -1}] mock.getTask.return_value = mock.getTasks.return_value[0] mock.getTask.side_effect = lambda x: mock.getTasks.return_value[0] if x == 5 else None - mock.getResourceClaims.return_value = [{'username': 'paulus', 'status': 'ALLOCATED', 'user_id': 1, 'task_id': 5, 'status_id': 1, 'resource_id': 1, 'session_id': 1, 'claim_size': 10L, 'starttime': datetime.datetime(2015, 11, 30, 12, 0), 'endtime': datetime.datetime(2015, 11, 30, 12, 0), 'id': 5}] + mock.getResourceClaims.return_value = [{'username': 'paulus', 'status': 'CLAIMED', 'user_id': 1, 'task_id': 5, 'status_id': 1, 'resource_id': 1, 'session_id': 1, 'claim_size': 10L, 'starttime': datetime.datetime(2015, 11, 30, 12, 0), 'endtime': datetime.datetime(2015, 11, 30, 12, 0), 'id': 5}] class Test1(unittest.TestCase): '''Test'''