diff --git a/SAS/MoM/MoMQueryService/momqueryservice.ini b/SAS/MoM/MoMQueryService/momqueryservice.ini index 46e75c1c7d68ef9b61eae94ea4ec18d33e06b2d5..a73dfacdcae47f7776ac9e232453191769b8f36d 100644 --- a/SAS/MoM/MoMQueryService/momqueryservice.ini +++ b/SAS/MoM/MoMQueryService/momqueryservice.ini @@ -1,5 +1,5 @@ [program:momqueryservice] -command=/bin/bash -c 'source $LOFARROOT/lofarinit.sh;momqueryservice --busname=lofar.ra.command --servicename=momqueryservice' +command=/bin/bash -c 'source $LOFARROOT/lofarinit.sh;momqueryservice' user=lofarsys stopsignal=INT ; KeyboardInterrupt stopasgroup=true ; bash does not propagate signals diff --git a/SAS/MoM/MoMQueryService/momqueryservice.py b/SAS/MoM/MoMQueryService/momqueryservice.py index a90e067fcbdbaf2afb4cb85b7a7451f70c3f74dd..4425754329f055929c73a0e3d49f05e42cbbd5e0 100755 --- a/SAS/MoM/MoMQueryService/momqueryservice.py +++ b/SAS/MoM/MoMQueryService/momqueryservice.py @@ -132,9 +132,9 @@ class MoMDatabaseWrapper: # TODO: make a view for this query in momdb! query = '''SELECT project.mom2id as project_mom2id, project.name as project_name, project.description as project_description, - object.mom2id as object_mom2id, object.name as object_name, object.description as object_description, object.mom2objecttype as object_type, object.group_id as object_group_id + object.mom2id as object_mom2id, object.id as object_mom2objectid, object.name as object_name, object.description as object_description, object.mom2objecttype as object_type, object.group_id as object_group_id FROM mom2object as object - inner join mom2object as project on project.id = object.ownerprojectid + left join mom2object as project on project.id = object.ownerprojectid where object.mom2id in (%s) order by project_mom2id ''' % (ids_str,) diff --git a/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/propagator.py b/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/propagator.py index 8c612605a32f8e263efa00e831c9e9ef1b1aa8a6..b902885226a57b54dd0a8b045056032a8e7fd832 100755 --- a/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/propagator.py +++ b/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/propagator.py @@ -108,17 +108,21 @@ class RAtoOTDBPropagator(): self.otdbrpc.taskSetStatus(otdb_id, 'conflict') def doTaskScheduled(self, ra_id, otdb_id, mom_id): - logger.info('doTaskScheduled: otdb_id=%s mom_id=%s' % (otdb_id, mom_id)) - if not otdb_id: - logger.warning('doTaskScheduled no valid otdb_id: otdb_id=%s' % (otdb_id,)) - return - ra_info = self.getRAinfo(ra_id) - project = self.momrpc.getProjectDetails(mom_id) - logger.info(project) - project_name = "_".join(project[str(mom_id)]['project_name'].split()) - otdb_info = self.translator.CreateParset(otdb_id, ra_info, project_name) - logger.debug("Parset info for OTDB: %s" %otdb_info) - self.setOTDBinfo(otdb_id, otdb_info, 'scheduled') + try: + logger.info('doTaskScheduled: otdb_id=%s mom_id=%s' % (otdb_id, mom_id)) + if not otdb_id: + logger.warning('doTaskScheduled no valid otdb_id: otdb_id=%s' % (otdb_id,)) + return + ra_info = self.getRAinfo(ra_id) + project = self.momrpc.getProjectDetails(mom_id) + logger.info(project) + project_name = "_".join(project[str(mom_id)]['project_name'].split()) + otdb_info = self.translator.CreateParset(otdb_id, ra_info, project_name) + logger.debug("Parset info for OTDB: %s" %otdb_info) + self.setOTDBinfo(otdb_id, otdb_info, 'scheduled') + except Exception as e: + logger.error(e) + self.doTaskConflict(ra_id, otdb_id, mom_id) def getRAinfo(self, ra_id): info = {} diff --git a/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/rotspservice.py b/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/rotspservice.py index 671faeb50b19a333ad92aab9354fb4d476496f69..98b29ea356eba84252bf2bcdfd54c694486bd303 100755 --- a/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/rotspservice.py +++ b/SAS/ResourceAssignment/RAtoOTDBTaskSpecificationPropagator/lib/rotspservice.py @@ -115,6 +115,7 @@ def main(): parser.add_option('-V', '--verbose', dest='verbose', action='store_true', help='verbose logging') (options, args) = parser.parse_args() + logging.getLogger('lofar.sas.resourceassignment.database.radbbuslistener').level = logging.WARN setQpidLogLevel(logging.INFO) logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', level=logging.DEBUG if options.verbose else logging.INFO) diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py index e2c038f8aa841201672a01b7d9578bfe11a3050a..2dabbf96e02a61217141221c05585e864ff5d48a 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py +++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py @@ -685,7 +685,7 @@ class RADatabase: (resource_claim_id, type_id, value, sap_id) VALUES {values} RETURNING id;'''.format(values=insert_values) - + ids = [x['id'] for x in self._executeQuery(query, fetch=_FETCH_ALL)] if [x for x in ids if x < 0]: @@ -1088,6 +1088,7 @@ class RADatabase: claimsStatuses = self.getResourceClaimStatuses() conflistStatusId = next(cs['id'] for cs in claimsStatuses if cs['name'] == 'conflict') 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:[]} @@ -1124,7 +1125,7 @@ class RADatabase: if totalOtherClaimSize + claimSize >= resource['available_capacity']: newClaimStatuses[conflistStatusId].append(claim_id) - else: + elif claim['status_id'] != allocatedStatusId: newClaimStatuses[claimedStatusId].append(claim_id) if newClaimStatuses: diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/mom.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/mom.py index f4f1095bc927e6cbdb744fa3b225d6083b22e88b..2d0bf9124875f1b0ed5eee3a5fcbc5e3bd1136a6 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/mom.py +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/mom.py @@ -61,6 +61,8 @@ def updateTaskMomDetails(task, momrpc): t['name'] = m['object_name'] t['project_name'] = m['project_name'] t['project_mom_id'] = m['project_mom2id'] + t['mom2object_id'] = m['object_mom2objectid'] + t['mom_object_group_id'] = m['object_group_id'] else: t['project_name'] = 'OTDB Only' t['project_mom_id'] = -98 diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js index 074b22611e8a2c115ead79c245dc9448f9923dd4..6f0ea2a138b02b3e3354499ed5b6ba68e3253b31 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js @@ -28,7 +28,7 @@ gridControllerMod.controller('GridController', ['$scope', 'dataService', 'uiGrid { field: 'mom_id', displayName: 'MoM ID', enableCellEdit: false, - cellTemplate:'<a target="_blank" href="https://lofar.astron.nl/mom3/user/project/setUpMom2ObjectDetails.do?view=generalinfo&mom2Id={{row.entity[col.field]}}">{{row.entity[col.field]}}</a>', + cellTemplate:'<a target="_blank" href="https://lofar.astron.nl/mom3/user/project/setUpMom2ObjectDetails.do?view=generalinfo&mom2ObjectId={{{{row.entity.mom2object_id}}}}">{{row.entity[col.field]}}</a>', width: '7.5%' }, { field: 'otdb_id',