def _get_process_definition(self): process_definition_id = self.CFG.get_safe( "highavailability.process_definition_id") process_definition_name = self.CFG.get_safe( "highavailability.process_definition_name") if process_definition_id: pd_name = self.pds[0] pd = ProcessDispatcherServiceClient(to_name=pd_name) definition = pd.read_process_definition(process_definition_id) elif process_definition_name: definitions, _ = self.container.resource_registry.find_resources( restype="ProcessDefinition", name=process_definition_name) if len(definitions) == 0: raise Exception("Process definition with name '%s' not found" % process_definition_name) elif len(definitions) > 1: raise Exception( "multiple process definitions found with name '%s'" % process_definition_name) definition = definitions[0] process_definition_id = definition._id else: raise Exception( "HA Agent requires either process definition ID or name") return process_definition_id, definition
def _get_process_definition(self): process_definition_id = self.CFG.get_safe("highavailability.process_definition_id") process_definition_name = self.CFG.get_safe("highavailability.process_definition_name") if process_definition_id: pd_name = self.pds[0] pd = ProcessDispatcherServiceClient(to_name=pd_name) definition = pd.read_process_definition(process_definition_id) elif process_definition_name: definitions, _ = self.container.resource_registry.find_resources( restype="ProcessDefinition", name=process_definition_name) if len(definitions) == 0: raise Exception("Process definition with name '%s' not found" % process_definition_name) elif len(definitions) > 1: raise Exception("multiple process definitions found with name '%s'" % process_definition_name) definition = definitions[0] process_definition_id = definition._id else: raise Exception("HA Agent requires either process definition ID or name") return process_definition_id, definition
def _register_service(self): if not self.process_definition_id: log.error("No process definition id. Not registering service") return if len(self.pds) < 1: log.error("Must have at least one PD available to register a service") return pd_name = self.pds[0] pd = ProcessDispatcherServiceClient(to_name=pd_name) definition = pd.read_process_definition(self.process_definition_id) existing_services, _ = self.container.resource_registry.find_resources( restype="Service", name=definition.name) if len(existing_services) > 0: if len(existing_services) > 1: log.warning("There is more than one service object for %s. Using the first one" % definition.name) service_id = existing_services[0]._id else: svc_obj = Service(name=definition.name, exchange_name=definition.name) service_id, _ = self.container.resource_registry.create(svc_obj) svcdefs, _ = self.container.resource_registry.find_resources( restype="ServiceDefinition", name=definition.name) if svcdefs: self.container.resource_registry.create_association( service_id, "hasServiceDefinition", svcdefs[0]._id) else: log.error("Cannot find ServiceDefinition resource for %s", definition.name) return service_id