def __init__(self, *args, **kwargs): configs = ["service", "dtrs"] config_files = get_config_paths(configs) self.CFG = bootstrap.configure(config_files) amqp_uri = kwargs.get('amqp_uri') self.amqp_uri = amqp_uri self.sysname = kwargs.get('sysname') self.dashi = bootstrap.dashi_connect(self.CFG.dtrs.service_name, self.CFG, self.amqp_uri, self.sysname) store = kwargs.get('store') self.store = store or get_dtrs_store(self.CFG) self.store.initialize() self.core = DTRSCore(self.store)
class DTRS(object): """Deployable Type Registry Service interface""" def __init__(self, *args, **kwargs): configs = ["service", "dtrs"] config_files = get_config_paths(configs) self.CFG = bootstrap.configure(config_files) amqp_uri = kwargs.get('amqp_uri') self.amqp_uri = amqp_uri self.sysname = kwargs.get('sysname') self.dashi = bootstrap.dashi_connect(self.CFG.dtrs.service_name, self.CFG, self.amqp_uri, self.sysname) store = kwargs.get('store') self.store = store or get_dtrs_store(self.CFG) self.store.initialize() self.core = DTRSCore(self.store) def start(self): log.info("starting DTRS instance %s" % self) self.dashi.link_exceptions(custom_exception=SiteDefinitionValidationError, dashi_exception=DashiBadRequestError) self.dashi.link_exceptions(custom_exception=NotFoundError, dashi_exception=DashiNotFoundError) self.dashi.link_exceptions(custom_exception=WriteConflictError, dashi_exception=DashiWriteConflictError) self.dashi.handle(self.add_dt) self.dashi.handle(self.describe_dt) self.dashi.handle(self.list_dts) self.dashi.handle(self.remove_dt) self.dashi.handle(self.update_dt) self.dashi.handle(self.add_site) self.dashi.handle(self.describe_site) self.dashi.handle(self.list_sites) self.dashi.handle(self.remove_site) self.dashi.handle(self.update_site) self.dashi.handle(self.add_credentials) self.dashi.handle(self.describe_credentials) self.dashi.handle(self.list_credentials) self.dashi.handle(self.remove_credentials) self.dashi.handle(self.update_credentials) self.dashi.handle(self.lookup) self.dashi.consume() def stop(self): self.dashi.cancel() self.dashi.disconnect() self.store.shutdown() # Deployable Types def add_dt(self, caller, dt_name, dt_definition): return self.core.store.add_dt(caller, dt_name, dt_definition) def describe_dt(self, caller, dt_name): return self.core.describe_dt(caller, dt_name) def list_dts(self, caller): return self.core.store.list_dts(caller) def remove_dt(self, caller, dt_name): return self.core.store.remove_dt(caller, dt_name) def update_dt(self, caller, dt_name, dt_definition): return self.core.store.update_dt(caller, dt_name, dt_definition) # Sites def add_site(self, site_name, site_definition, caller=None): return self.core.add_site(caller, site_name, site_definition) def describe_site(self, site_name, caller=None): return self.core.describe_site(caller, site_name) def list_sites(self, caller=None): return self.core.store.list_sites(caller) def remove_site(self, site_name, caller=None): return self.core.store.remove_site(caller, site_name) def update_site(self, site_name, site_definition, caller=None): return self.core.update_site(caller, site_name, site_definition) # Credentials def add_credentials(self, caller, site_name, site_credentials): return self.core.add_credentials(caller, site_name, site_credentials) def describe_credentials(self, caller, site_name): return self.core.describe_credentials(caller, site_name) def list_credentials(self, caller): return self.core.store.list_credentials(caller) def remove_credentials(self, caller, site_name): return self.core.store.remove_credentials(caller, site_name) def update_credentials(self, caller, site_name, site_credentials): return self.core.store.update_credentials(caller, site_name, site_credentials) # Old DTRS methods - keeping the API unmodified for now def lookup(self, caller, dt_name, dtrs_request_node, vars): return self.core.lookup(caller, dt_name, dtrs_request_node, vars)