def set_ports(pnode): platform_id = pnode.platform_id port_infos = rsn_oms.port.get_platform_ports(platform_id) if not isinstance(port_infos, dict): raise PlatformDriverException( "%r: get_platform_ports response is not a dict: %s" % ( platform_id, port_infos)) if log.isEnabledFor(logging.TRACE): log.trace("%r: port_infos: %s", platform_id, port_infos) if not platform_id in port_infos: raise PlatformDriverException( "%r: get_platform_ports response does not include " "platform_id: %s" % (platform_id, port_infos)) ports = port_infos[platform_id] if not isinstance(ports, dict): raise PlatformDriverException( "%r: get_platform_ports: entry for platform_id is " "not a dict: %s" % (platform_id, ports)) for port_id, dic in ports.iteritems(): port = PortNode(port_id) port.set_state(dic['state']) pnode.add_port(port) # add connected instruments: instrs_res = rsn_oms.instr.get_connected_instruments(platform_id, port_id) if not isinstance(instrs_res, dict): log.warn("%r: port_id=%r: get_connected_instruments " "response is not a dict: %s" % (platform_id, port_id, instrs_res)) continue if log.isEnabledFor(logging.TRACE): log.trace("%r: port_id=%r: get_connected_instruments " "returned: %s" % (platform_id, port_id, instrs_res)) if not platform_id in instrs_res: raise PlatformDriverException( "%r: port_id=%r: get_connected_instruments response" "does not have entry for platform_id: %s" % ( platform_id, ports)) if not port_id in instrs_res[platform_id]: raise PlatformDriverException( "%r: port_id=%r: get_connected_instruments response " "for platform_id does not have entry for port_id: %s" % ( platform_id, port_id, instrs_res[platform_id])) instr = instrs_res[platform_id][port_id] for instrument_id, attrs in instr.iteritems(): port.add_instrument(InstrumentNode(instrument_id, attrs))
def build_and_add_ports_to_node(ports, pn): for port_info in ports: assert 'port_id' in port_info port_id = port_info['port_id'] port = PortNode(port_id) port.set_state(port_info.get('state', None)) if 'instruments' in port_info: for instrument in port_info['instruments']: instrument_id = instrument['instrument_id'] if instrument_id in port.instruments: raise Exception('port_id=%r: duplicate instrument ID %r' % ( port_id, instrument_id)) port.add_instrument(InstrumentNode(instrument_id)) pn.add_port(port)
def build_and_add_ports_to_node(ports, pn): for port_info in ports: assert 'port_id' in port_info port_id = port_info['port_id'] port = PortNode(port_id) port.set_state(port_info.get('state', None)) if 'instruments' in port_info: for instrument in port_info['instruments']: instrument_id = instrument['instrument_id'] if instrument_id in port.instruments: raise Exception( 'port_id=%r: duplicate instrument ID %r' % (port_id, instrument_id)) port.add_instrument(InstrumentNode(instrument_id)) pn.add_port(port)