def _on_init(self): ResourceAgent._on_init(self) # log.debug(">>funcs:\n%s" % dir(self)) # log.debug(">>type:\n%s" % type(self)) # log.debug(">>CFG:\n%s" % self.CFG) # log.debug(">>_proc_type:\n%s" % self._proc_type) ext_dataset_id = self.CFG.get('process',{}).get('eoa',{}).get('dataset_id','') log.debug(">>ds_id:\n\t%s" % ext_dataset_id) self.resreg_cli = ResourceRegistryServiceClient() self.pubsub_cli = PubsubManagementServiceClient() # retrieve all the ExternalDataset resource associated resources ext_ds_res = self.resreg_cli.read(object_id=ext_dataset_id) log.debug("Retrieved ExternalDataset: %s" % ext_ds_res) dsrc_res, dsrc_acc = self.resreg_cli.find_objects(subject=ext_dataset_id, predicate=PRED.hasSource, object_type=RT.DataSource) dsrc_res = dsrc_res[0] dsrc_id = dsrc_acc[0].o log.debug("Found associated DataSource: %s" % dsrc_id) edp_res, edp_acc = self.resreg_cli.find_objects(subject=dsrc_id, predicate=PRED.hasProvider, object_type=RT.ExternalDataProvider) edp_res = edp_res[0] edp_id = edp_acc[0].o log.debug("Found associated ExternalDataProvider: %s" % edp_id) mdl_res, mdl_acc = self.resreg_cli.find_objects(subject=dsrc_id, predicate=PRED.hasModel, object_type=RT.ExternalDataSourceModel) mdl_res = mdl_res[0] mdl_id = mdl_acc[0].o log.debug("Found associated ExternalDataSourceModel: %s" % mdl_id) dprod_id, _ = self.resreg_cli.find_objects(subject=ext_dataset_id, predicate=PRED.hasDataProducer, object_type=RT.DataProducer, id_only=True) dprod_id = dprod_id[0] log.debug("Found associated DataProducer: %s" % dprod_id) stream_id, _ = self.resreg_cli.find_objects(subject=dprod_id, predicate=PRED.hasStream, object_type=RT.Stream, id_only=True) stream_id = stream_id[0] log.debug("Found associated Stream: %s" % stream_id) # configure the stream publisher log.debug("Configure StreamPublisher") stream_route = self.pubsub_cli.read_stream(stream_id=stream_id) log.debug("StreamRoute: %s" % stream_route) self._stream_publisher = StreamPublisher(stream_route) # instantiate the data_handler instance modpath = mdl_res.data_handler_module log.debug("ExternalDataHandler module: %s" % modpath) classname = mdl_res.data_handler_class log.debug("ExternalDataHandler class: %s" % classname) module = __import__(modpath, fromlist=[classname]) classobj = getattr(module, classname) self._data_handler = classobj(data_provider=edp_res, data_source=dsrc_res, ext_dataset=ext_ds_res) assert isinstance(self._data_handler, BaseExternalDataHandler), "Instantiated service not a BaseExternalDataHandler %r" % self._data_handler
def __init__(self, initial_state=InstrumentAgentState.UNINITIALIZED): """ Initialize instrument agent prior to pyon process initialization. Define state machine, initialize member variables. """ ResourceAgent.__init__(self) # Instrument agent state machine. self._fsm = InstrumentFSM(InstrumentAgentState, InstrumentAgentEvent, InstrumentAgentEvent.ENTER, InstrumentAgentEvent.EXIT, InstErrorCode.UNHANDLED_EVENT) # Populate state machine for all state-events. self._fsm.add_handler(InstrumentAgentState.POWERED_DOWN, InstrumentAgentEvent.ENTER, self._handler_powered_down_enter) self._fsm.add_handler(InstrumentAgentState.POWERED_DOWN, InstrumentAgentEvent.EXIT, self._handler_powered_down_exit) self._fsm.add_handler(InstrumentAgentState.UNINITIALIZED, InstrumentAgentEvent.ENTER, self._handler_uninitialized_enter) self._fsm.add_handler(InstrumentAgentState.UNINITIALIZED, InstrumentAgentEvent.EXIT, self._handler_uninitialized_exit) self._fsm.add_handler(InstrumentAgentState.UNINITIALIZED, InstrumentAgentEvent.POWER_DOWN, self._handler_uninitialized_power_down) self._fsm.add_handler(InstrumentAgentState.UNINITIALIZED, InstrumentAgentEvent.INITIALIZE, self._handler_uninitialized_initialize) self._fsm.add_handler(InstrumentAgentState.UNINITIALIZED, InstrumentAgentEvent.RESET, self._handler_uninitialized_reset) self._fsm.add_handler(InstrumentAgentState.INACTIVE, InstrumentAgentEvent.ENTER, self._handler_inactive_enter) self._fsm.add_handler(InstrumentAgentState.INACTIVE, InstrumentAgentEvent.EXIT, self._handler_inactive_exit) self._fsm.add_handler(InstrumentAgentState.INACTIVE, InstrumentAgentEvent.INITIALIZE, self._handler_inactive_initialize) self._fsm.add_handler(InstrumentAgentState.INACTIVE, InstrumentAgentEvent.RESET, self._handler_inactive_reset) self._fsm.add_handler(InstrumentAgentState.INACTIVE, InstrumentAgentEvent.GO_ACTIVE, self._handler_inactive_go_active) self._fsm.add_handler(InstrumentAgentState.INACTIVE, InstrumentAgentEvent.GET_RESOURCE_COMMANDS, self._handler_get_resource_commands) self._fsm.add_handler(InstrumentAgentState.INACTIVE, InstrumentAgentEvent.GET_RESOURCE_PARAMS, self._handler_get_resource_params) self._fsm.add_handler(InstrumentAgentState.IDLE, InstrumentAgentEvent.ENTER, self._handler_idle_enter) self._fsm.add_handler(InstrumentAgentState.IDLE, InstrumentAgentEvent.EXIT, self._handler_idle_exit) self._fsm.add_handler(InstrumentAgentState.IDLE, InstrumentAgentEvent.GO_INACTIVE, self._handler_idle_go_inactive) self._fsm.add_handler(InstrumentAgentState.IDLE, InstrumentAgentEvent.RESET, self._handler_idle_reset) self._fsm.add_handler(InstrumentAgentState.IDLE, InstrumentAgentEvent.RUN, self._handler_idle_run) self._fsm.add_handler(InstrumentAgentState.IDLE, InstrumentAgentEvent.GET_RESOURCE_COMMANDS, self._handler_get_resource_commands) self._fsm.add_handler(InstrumentAgentState.IDLE, InstrumentAgentEvent.GET_RESOURCE_PARAMS, self._handler_get_resource_params) self._fsm.add_handler(InstrumentAgentState.STOPPED, InstrumentAgentEvent.ENTER, self._handler_stopped_enter) self._fsm.add_handler(InstrumentAgentState.STOPPED, InstrumentAgentEvent.EXIT, self._handler_stopped_exit) self._fsm.add_handler(InstrumentAgentState.STOPPED, InstrumentAgentEvent.GO_INACTIVE, self._handler_stopped_go_inactive) self._fsm.add_handler(InstrumentAgentState.STOPPED, InstrumentAgentEvent.RESET, self._handler_stopped_reset) self._fsm.add_handler(InstrumentAgentState.STOPPED, InstrumentAgentEvent.CLEAR, self._handler_stopped_clear) self._fsm.add_handler(InstrumentAgentState.STOPPED, InstrumentAgentEvent.RESUME, self._handler_stopped_resume) self._fsm.add_handler(InstrumentAgentState.STOPPED, InstrumentAgentEvent.GET_RESOURCE_COMMANDS, self._handler_get_resource_commands) self._fsm.add_handler(InstrumentAgentState.STOPPED, InstrumentAgentEvent.GET_RESOURCE_PARAMS, self._handler_get_resource_params) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.ENTER, self._handler_observatory_enter) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.EXIT, self._handler_observatory_exit) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.GO_INACTIVE, self._handler_observatory_go_inactive) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.RESET, self._handler_observatory_reset) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.CLEAR, self._handler_observatory_clear) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.PAUSE, self._handler_observatory_pause) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.GO_STREAMING, self._handler_observatory_go_streaming) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.GO_DIRECT_ACCESS, self._handler_observatory_go_direct_access) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.GET_RESOURCE_COMMANDS, self._handler_get_resource_commands) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.GET_RESOURCE_PARAMS, self._handler_get_resource_params) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.GET_PARAMS, self._handler_get_params) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.SET_PARAMS, self._handler_observatory_set_params) self._fsm.add_handler(InstrumentAgentState.OBSERVATORY, InstrumentAgentEvent.EXECUTE_RESOURCE, self._handler_observatory_execute_resource) self._fsm.add_handler(InstrumentAgentState.STREAMING, InstrumentAgentEvent.ENTER, self._handler_streaming_enter) self._fsm.add_handler(InstrumentAgentState.STREAMING, InstrumentAgentEvent.EXIT, self._handler_streaming_exit) self._fsm.add_handler(InstrumentAgentState.STREAMING, InstrumentAgentEvent.GO_INACTIVE, self._handler_streaming_go_inactive) self._fsm.add_handler(InstrumentAgentState.STREAMING, InstrumentAgentEvent.RESET, self._handler_streaming_reset) self._fsm.add_handler(InstrumentAgentState.STREAMING, InstrumentAgentEvent.GO_OBSERVATORY, self._handler_streaming_go_observatory) self._fsm.add_handler(InstrumentAgentState.STREAMING, InstrumentAgentEvent.GET_RESOURCE_COMMANDS, self._handler_get_resource_commands) self._fsm.add_handler(InstrumentAgentState.STREAMING, InstrumentAgentEvent.GET_RESOURCE_PARAMS, self._handler_get_resource_params) self._fsm.add_handler(InstrumentAgentState.STREAMING, InstrumentAgentEvent.GET_PARAMS, self._handler_get_params) self._fsm.add_handler(InstrumentAgentState.DIRECT_ACCESS, InstrumentAgentEvent.ENTER, self._handler_direct_access_enter) self._fsm.add_handler(InstrumentAgentState.DIRECT_ACCESS, InstrumentAgentEvent.EXIT, self._handler_direct_access_exit) self._fsm.add_handler(InstrumentAgentState.DIRECT_ACCESS, InstrumentAgentEvent.GO_OBSERVATORY, self._handler_direct_access_go_observatory) self._fsm.add_handler(InstrumentAgentState.DIRECT_ACCESS, InstrumentAgentEvent.GET_RESOURCE_COMMANDS, self._handler_get_resource_commands) self._fsm.add_handler(InstrumentAgentState.DIRECT_ACCESS, InstrumentAgentEvent.GET_RESOURCE_PARAMS, self._handler_get_resource_params) ############################################################################### # Instrument agent internal parameters. ############################################################################### # State machine start state, defaults to unconfigured. self._initial_state = initial_state # Driver configuration. Passed as part of the spawn configuration # or with an initialize command. Sets driver specific # context. self._dvr_config = None # Process ID of the driver process. Useful to identify and signal # the process if necessary. Set by transition to inactive. self._dvr_pid = None # The driver process popen object. To terminate, signal, wait on, # or otherwise interact with the driver process via subprocess. # Set by transition to inactive. self._dvr_proc = None # The driver client for communicating to the driver process in # request-response or event publication. Set by transition to # inactive. self._dvr_client = None # UUID of the current transaction. self.transaction_id = None # List of pending transactions. self._pending_transactions = [] # Dictionary of data stream IDs for data publishing. Constructed # by stream_config agent config member during process on_init. self._data_streams = {} # Dictionary of data stream publishers. Constructed by # stream_config agent config member during process on_init. self._data_publishers = {} # Factories for stream packets. Constructed by driver # configuration information on transition to inactive. self._packet_factories = {} # Stream registrar to create publishers. Used to create # stream publishers, set during process on_init. self._stream_registrar = None # Latitude value. Set by subscription to platform. Used to # append data packets prior to publication. self._lat = 0 # Longitude value. Set by subscription to platform. Used to # append data packets prior to publication. self._lon = 0 ############################################################################### # Instrument agent parameter capabilities. ############################################################################### self.aparam_ia_param = None
def __init__(self): log.debug("ExecutionEngineAgent init") ResourceAgent.__init__(self)
def _on_quit(self): self._data_handler.close() ResourceAgent._on_quit(self)
def __init__(self, *args, **kwargs): ResourceAgent.__init__(self, *args, **kwargs)
def __init__(self): log.debug("HighAvailabilityAgent init") ResourceAgent.__init__(self)
def _on_init(self): ResourceAgent._on_init(self) # log.debug(">>funcs:\n%s" % dir(self)) # log.debug(">>type:\n%s" % type(self)) # log.debug(">>CFG:\n%s" % self.CFG) # log.debug(">>_proc_type:\n%s" % self._proc_type) ext_dataset_id = self.CFG.get('process', {}).get('eoa', {}).get('dataset_id', '') log.debug(">>ds_id:\n\t%s" % ext_dataset_id) self.resreg_cli = ResourceRegistryServiceClient() self.pubsub_cli = PubsubManagementServiceClient() # retrieve all the ExternalDataset resource associated resources ext_ds_res = self.resreg_cli.read(object_id=ext_dataset_id) log.debug("Retrieved ExternalDataset: %s" % ext_ds_res) dsrc_res, dsrc_acc = self.resreg_cli.find_objects( subject=ext_dataset_id, predicate=PRED.hasSource, object_type=RT.DataSource) dsrc_res = dsrc_res[0] dsrc_id = dsrc_acc[0].o log.debug("Found associated DataSource: %s" % dsrc_id) edp_res, edp_acc = self.resreg_cli.find_objects( subject=dsrc_id, predicate=PRED.hasProvider, object_type=RT.ExternalDataProvider) edp_res = edp_res[0] edp_id = edp_acc[0].o log.debug("Found associated ExternalDataProvider: %s" % edp_id) mdl_res, mdl_acc = self.resreg_cli.find_objects( subject=dsrc_id, predicate=PRED.hasModel, object_type=RT.DataSourceModel) mdl_res = mdl_res[0] mdl_id = mdl_acc[0].o log.debug("Found associated DataSourceModel: %s" % mdl_id) dprod_id, _ = self.resreg_cli.find_objects( subject=ext_dataset_id, predicate=PRED.hasOutputProduct, object_type=RT.DataProduct, id_only=True) dprod_id = dprod_id[0] log.debug("Found associated DataProduct: %s" % dprod_id) stream_id, _ = self.resreg_cli.find_objects(subject=dprod_id, predicate=PRED.hasStream, object_type=RT.Stream, id_only=True) log.debug(">>>>> stream_id: %s" % stream_id) stream_id = stream_id[0] log.debug("Found associated Stream: %s" % stream_id) # configure the stream publisher log.debug("Configure StreamPublisher") stream_route = self.pubsub_cli.read_stream(stream_id=stream_id) log.debug("StreamRoute: %s" % stream_route) self._stream_publisher = StreamPublisher(stream_route) # instantiate the data_handler instance modpath = mdl_res.data_handler_module log.debug("ExternalDataHandler module: %s" % modpath) classname = mdl_res.data_handler_class log.debug("ExternalDataHandler class: %s" % classname) module = __import__(modpath, fromlist=[classname]) classobj = getattr(module, classname) self._data_handler = classobj(data_provider=edp_res, data_source=dsrc_res, ext_dataset=ext_ds_res) assert isinstance( self._data_handler, BaseExternalDataHandler ), "Instantiated service not a BaseExternalDataHandler %r" % self._data_handler