def start_router_realm(self, id, config, schemas=None, enable_trace=False, details=None): """ Starts a realm on this router worker. :param id: The ID of the realm to start. :type id: str :param config: The realm configuration. :type config: dict :param schemas: An (optional) initial schema dictionary to load. :type schemas: dict """ self.log.debug("{}.start_router_realm".format(self.__class__.__name__), id=id, config=config, schemas=schemas) # prohibit starting a realm twice # if id in self.realms: emsg = "Could not start realm: a realm with ID '{}' is already running (or starting)".format(id) self.log.error(emsg) raise ApplicationError(u'crossbar.error.already_running', emsg) # check configuration # try: checkconfig.check_router_realm(config) except Exception as e: emsg = "Invalid router realm configuration: {}".format(e) self.log.error(emsg) raise ApplicationError(u"crossbar.error.invalid_configuration", emsg) # URI of the realm to start realm = config['name'] # track realm rlm = RouterRealm(id, config) self.realms[id] = rlm self.realm_to_id[realm] = id # create a new router for the realm router = self._router_factory.start_realm(rlm) if enable_trace: router._trace_traffic = True router._trace_traffic_roles_include = None router._trace_traffic_roles_exclude = [u'trusted'] self.log.info(">>> Traffic tracing enabled! <<<") # add a router/realm service session extra = { 'onready': Deferred() } cfg = ComponentConfig(realm, extra) rlm.session = RouterServiceSession(cfg, router, schemas=schemas) self._router_session_factory.add(rlm.session, authrole=u'trusted') yield extra['onready'] self.log.info("Realm '{realm}' started", realm=realm)
def test_dynamic_authorizer(self): config_realm = { "name": "realm1", "roles": [{ "name": u"dynamic", "authorizer": u"com.example.foo" }] } checkconfig.check_router_realm(config_realm)
def test_dynamic_authorizer(self): config_realm = { "name": "realm1", "roles": [ { "name": u"dynamic", "authorizer": u"com.example.foo" } ] } checkconfig.check_router_realm(config_realm)
def test_static_permissions(self): config_realm = { "name": "realm1", "roles": [{ "name": "backend", "permissions": [{ "uri": u"*", "publish": True, "subscribe": True, "call": True, "register": True }] }] } checkconfig.check_router_realm(config_realm)
def test_static_permissions(self): config_realm = { "name": "realm1", "roles": [ { "name": "backend", "permissions": [ { "uri": u"*", "publish": True, "subscribe": True, "call": True, "register": True } ] } ] } checkconfig.check_router_realm(config_realm)