def check_controller_fabric(personality, fabric): """ Check controller Fabric configuration override (which essentially is only for debugging purposes or for people running Crossbar.io FX Service on-premise) :param fabric: The Fabric configuration to check. :type fabric: dict """ if not isinstance(fabric, Mapping): raise checkconfig.InvalidConfigException( "'fabric' in controller configuration must be a dictionary ({} encountered)\n\n" .format(type(fabric))) for k in fabric: if k not in ['transport', 'heartbeat']: raise checkconfig.InvalidConfigException( "encountered unknown attribute '{}' in 'fabric' in controller configuration" .format(k)) if 'transport' in fabric: checkconfig.check_connecting_transport(personality, fabric['transport']) if 'heartbeat' in fabric: heartbeat = fabric['heartbeat'] checkconfig.check_dict_args( { 'startup_delay': (False, [int, float]), 'heartbeat_period': (False, [int, float]), 'include_system_stats': (False, [bool]), 'send_workers_heartbeats': (False, [bool]), 'aggregate_workers_heartbeats': (False, [bool]), }, heartbeat, "heartbeat configuration: {}".format(pformat(heartbeat)))
def parse(personality, obj, id=None): """ Parses a generic object (eg a dict) into a typed object of this class. :param obj: The generic object to parse. :type obj: dict :returns: Router link configuration :rtype: :class:`crossbar.edge.worker.rlink.RLinkConfig` """ # assert isinstance(personality, Personality) assert type(obj) == dict assert id is None or type(id) == str if id: obj['id'] = id check_dict_args( { 'id': (False, [str]), 'realm': (True, [str]), 'transport': (True, [Mapping]), 'authid': (False, [str]), 'exclude_authid': (False, [Sequence]), 'forward_local_events': (False, [bool]), 'forward_remote_events': (False, [bool]), 'forward_local_invocations': (False, [bool]), 'forward_remote_invocations': (False, [bool]), }, obj, 'router link configuration') realm = obj['realm'] authid = obj.get('authid', None) exclude_authid = obj.get('exclude_authid', []) for aid in exclude_authid: assert type(aid) == str forward_local_events = obj.get('forward_local_events', True) forward_remote_events = obj.get('forward_remote_events', True) forward_local_invocations = obj.get('forward_local_invocations', True) forward_remote_invocations = obj.get('forward_remote_invocations', True) transport = obj['transport'] check_realm_name(realm) check_connecting_transport(personality, transport) config = RLinkConfig( realm=realm, transport=transport, authid=authid, exclude_authid=exclude_authid, forward_local_events=forward_local_events, forward_remote_events=forward_remote_events, forward_local_invocations=forward_local_invocations, forward_remote_invocations=forward_remote_invocations, ) return config
def check_market_maker(personality, maker): maker = dict(maker) checkconfig.check_dict_args( { 'id': (True, [six.text_type]), 'key': (True, [six.text_type]), 'database': (True, [Mapping]), 'connection': (True, [Mapping]), 'blockchain': (False, [Mapping]), }, maker, "market maker configuration {}".format(pformat(maker))) check_database(personality, dict(maker['database'])) checkconfig.check_dict_args( { 'realm': (True, [six.text_type]), 'transport': (True, [Mapping]), }, dict(maker['connection']), "market maker connection configuration") checkconfig.check_connecting_transport( personality, dict(maker['connection']['transport'])) if 'blockchain' in maker: check_blockchain(personality, maker['blockchain'])