diff --git a/extern/ion-definitions b/extern/ion-definitions index dbf873e18..ae9e59129 160000 --- a/extern/ion-definitions +++ b/extern/ion-definitions @@ -1 +1 @@ -Subproject commit dbf873e18315f4b8c02610dcb41d384541b20391 +Subproject commit ae9e59129aa91ed06795000460ab0eecd557c4a6 diff --git a/ion/services/sa/instrument/instrument_management_service.py b/ion/services/sa/instrument/instrument_management_service.py index ab73b9781..ab0788c85 100644 --- a/ion/services/sa/instrument/instrument_management_service.py +++ b/ion/services/sa/instrument/instrument_management_service.py @@ -2086,6 +2086,36 @@ def prepare_platform_device_support(self, platform_device_id=''): 'unassign_instrument_device_from_platform_device', { "instrument_device_id": "$(instrument_device_id)", "platform_device_id": platform_device_id }) + #### + extended_resource_handler.set_service_requests(resource_data.associations['PlatformAgentInstance'].assign_request, + 'instrument_management', + 'assign_platform_agent_instance_to_platform_device', + {'platform_device_id': platform_device_id, + 'platform_agent_instance_id': '$(platform_agent_instance_id)' }) + + extended_resource_handler.set_service_requests(resource_data.associations['PlatformAgentInstance'].unassign_request, + 'instrument_management', + 'unassign_platform_agent_instance_to_platform_device', + {'platform_device_id': platform_device_id, + 'platform_agent_instance_id': '$(platform_agent_instance_id)' }) + + # prepare grouping for PAI + pa_to_pm = [a for a in self.RR2.find_associations(predicate='hasModel') if a.st=='PlatformAgent'] + pai_to_pa = self.RR2.find_associations(predicate='hasAgentDefinition') + + # discussions indicate we want to only show unassociated PAIs or PAIs associated with this PD + # this is a list of all PAIs resids currently associated to an PD, not including this current PD we're preparing for + cur_pd_to_pai_without_this = [a.o for a in self.RR2.find_associations(predicate='hasAgentInstance') if a.st=='PlatformDevice' and a.s != platform_device_id] + def allowed(pai): + return pai not in cur_pd_to_pai_without_this + + pa_to_pai = defaultdict(list) + for a in pai_to_pa: + if allowed(a.s): + pa_to_pai[a.o].append(a.s) + + resource_data.associations['PlatformAgentInstance'].group = {'group_by': 'PlatformModel', + 'resources': {papmassoc.o:pa_to_pai[papmassoc.s] for papmassoc in pa_to_pm}} return resource_data