def setUp(self): self.loop = asyncio.new_event_loop() asyncio.set_event_loop(self.loop) service = MagicMock() service.config = { # Replicate arbitrary orc8r protos 'state_protos': [ { 'proto_file': 'orc8r.protos.common_pb2', 'proto_msg': 'NetworkID', 'redis_key': NID_TYPE, 'state_scope': 'network' }, { 'proto_file': 'orc8r.protos.service303_pb2', 'proto_msg': 'LogVerbosity', 'redis_key': LOG_TYPE, 'state_scope': 'gateway' }, ], 'json_state': [{ 'redis_key': FOO_TYPE, 'state_scope': 'gateway' }] } service.loop = self.loop # Bind the rpc server to a free port self._rpc_server = grpc.server( futures.ThreadPoolExecutor(max_workers=10)) port = self._rpc_server.add_insecure_port('0.0.0.0:0') # Add the servicer self._servicer = DummyStateServer() self._servicer.add_to_server(self._rpc_server) self._rpc_server.start() # Create a rpc stub self.channel = grpc.insecure_channel('0.0.0.0:{}'.format(port)) serde1 = RedisSerde(NID_TYPE, get_proto_serializer(), get_proto_deserializer(NetworkID)) serde2 = RedisSerde(FOO_TYPE, get_json_serializer(), get_json_deserializer()) serde3 = RedisSerde(LOG_TYPE, get_proto_serializer(), get_proto_deserializer(LogVerbosity)) self.nid_client = RedisFlatDict(get_default_client(), serde1) self.foo_client = RedisFlatDict(get_default_client(), serde2) self.log_client = RedisFlatDict(get_default_client(), serde3) # Set up and start garbage collecting loop grpc_client_manager = GRPCClientManager( service_name="state", service_stub=StateServiceStub, max_client_reuse=60, ) # Start state garbage collection loop self.garbage_collector = GarbageCollector(service, grpc_client_manager)
def __init__(self, client): serde = RedisSerde( DHCP_GW_INFO_REDIS_TYPE, get_json_serializer(), get_json_deserializer(), ) super().__init__(client, serde)
def __init__(self, client): serde = RedisSerde( MAC_TO_IP_REDIS_TYPE, get_json_serializer(), get_json_deserializer(), ) super().__init__(client, serde)
def get_json_redis_dicts(config): redis_dicts = [] json_state = config.get('json_state', []) or [] for json_cfg in json_state: is_invalid_cfg = 'redis_key' not in json_cfg or \ 'state_scope' not in json_cfg if is_invalid_cfg: logging.warning( "Invalid json state config found in json_state" "configuration: %s", json_cfg, ) continue logging.info( 'Initializing RedisSerde for json state %s', json_cfg['redis_key'], ) redis_key = json_cfg['redis_key'] serde = RedisSerde( redis_key, get_json_serializer(), get_json_deserializer(), ) redis_dict = StateDict( serde, json_cfg['state_scope'], JSON_FORMAT, ) redis_dicts.append(redis_dict) return redis_dicts
def __init__(self): serde = RedisSerde( self.REDIS_VALUE_TYPE, get_proto_serializer(), get_proto_deserializer(ServiceExitStatus), ) self._flat_dict = RedisFlatDict(get_default_client(), serde)
def __init__(self, client): serde = RedisSerde( ALLOCATED_SESSION_PREFIX_TYPE, get_json_serializer(), get_json_deserializer(), ) super().__init__(client, serde)
def __init__(self, client): serde = RedisSerde( IPDESC_REDIS_TYPE, serialize_utils.serialize_ip_desc, serialize_utils.deserialize_ip_desc, ) super().__init__(client, serde, writethrough=True)
def __init__(self): client = get_default_client() serde = RedisSerde( self._DICT_HASH, get_json_serializer(), get_json_deserializer(), ) super().__init__(client, serde, writethrough=True)
def __init__(self, client): serde = RedisSerde( ALLOCATED_IID_REDIS_TYPE, get_json_serializer(), get_json_deserializer(), ) super().__init__(client, serde)
def get_proto_redis_dicts(config): redis_dicts = [] state_protos = config.get('state_protos', []) or [] for proto_cfg in state_protos: is_invalid_cfg = 'proto_msg' not in proto_cfg or \ 'proto_file' not in proto_cfg or \ 'redis_key' not in proto_cfg or \ 'state_scope' not in proto_cfg if is_invalid_cfg: logging.warning( "Invalid proto config found in state_protos " "configuration: %s", proto_cfg) continue try: proto_module = importlib.import_module(proto_cfg['proto_file']) msg = getattr(proto_module, proto_cfg['proto_msg']) redis_key = proto_cfg['redis_key'] logging.info('Initializing RedisSerde for proto state %s', proto_cfg['redis_key']) serde = RedisSerde(redis_key, get_proto_serializer(), get_proto_deserializer(msg)) redis_dict = StateDict(serde, proto_cfg['state_scope'], PROTO_FORMAT) redis_dicts.append(redis_dict) except (ImportError, AttributeError) as err: logging.error(err) return redis_dicts
def __init__(self): client = get_default_client() serde = RedisSerde( ALLOCATED_IID_REDIS_TYPE, get_json_serializer(), get_json_deserializer(), ) super().__init__(client, serde)
def __init__(self): client = get_default_client() serde = RedisSerde( DHCP_GW_INFO_REDIS_TYPE, get_json_serializer(), get_json_deserializer(), ) super().__init__(client, serde)
def __init__(self): client = get_default_client() serde = RedisSerde( ALLOCATED_SESSION_PREFIX_TYPE, get_json_serializer(), get_json_deserializer(), ) super().__init__(client, serde)
def __init__(self, print_grpc_payload: bool = False): """Initialize Directoryd grpc endpoints.""" serde = RedisSerde(DIRECTORYD_REDIS_TYPE, get_json_serializer(), get_json_deserializer()) self._redis_dict = RedisFlatDict(get_default_client(), serde) self._print_grpc_payload = print_grpc_payload if self._print_grpc_payload: logging.info("Printing GRPC messages")
def setUp(self): client = get_default_client() # Use arbitrary orc8r proto to test with self._hash_dict = RedisHashDict(client, "unittest", get_proto_serializer(), get_proto_deserializer(LogVerbosity)) serde = RedisSerde('log_verbosity', get_proto_serializer(), get_proto_deserializer(LogVerbosity)) self._flat_dict = RedisFlatDict(client, serde)
def _get_json_redis_clients(self): clients = [] json_state = self._service.config.get('json_state', []) or [] for json_cfg in json_state: is_invalid_cfg = 'redis_key' not in json_cfg or \ 'state_scope' not in json_cfg if is_invalid_cfg: logging.warning( "Invalid json state config found in json_state" "configuration: %s", json_cfg) continue logging.info('Initializing RedisSerde for json state %s', json_cfg['redis_key']) redis_key = json_cfg['redis_key'] serde = RedisSerde(redis_key, get_json_serializer(), get_json_deserializer()) client = StateDict(serde, json_cfg['state_scope'], JSON_FORMAT) clients.append(client) return clients
def __init__(self): serde = RedisSerde(DIRECTORYD_REDIS_TYPE, get_json_serializer(), get_json_deserializer()) self._redis_dict = RedisFlatDict(get_default_client(), serde)
def __init__(self): client = get_default_client() serde = RedisSerde(MAC_TO_IP_REDIS_TYPE, get_json_serializer(), get_json_deserializer()) super().__init__(client, serde)
def setUp(self): self.mock_redis = fakeredis.FakeStrictRedis() self.loop = asyncio.new_event_loop() asyncio.set_event_loop(self.loop) service = MagicMock() service.config = { # Replicate arbitrary orc8r protos 'state_protos': [ { 'proto_file': 'orc8r.protos.common_pb2', 'proto_msg': 'NetworkID', 'redis_key': NID_TYPE, 'state_scope': 'network', }, { 'proto_file': 'orc8r.protos.common_pb2', 'proto_msg': 'IDList', 'redis_key': IDList_TYPE, 'state_scope': 'gateway', }, { 'proto_file': 'orc8r.protos.service303_pb2', 'proto_msg': 'LogVerbosity', 'redis_key': LOG_TYPE, 'state_scope': 'gateway', }, ], 'json_state': [{ 'redis_key': FOO_TYPE, 'state_scope': 'network' }], } service.loop = self.loop # Bind the rpc server to a free port self._rpc_server = grpc.server( futures.ThreadPoolExecutor(max_workers=10), ) port = self._rpc_server.add_insecure_port('0.0.0.0:0') # Add the servicer self._servicer = DummyStateServer() self._servicer.add_to_server(self._rpc_server) self._rpc_server.start() # Create a rpc stub self.channel = grpc.insecure_channel('0.0.0.0:{}'.format(port)) serde1 = RedisSerde( NID_TYPE, get_proto_serializer(), get_proto_deserializer(NetworkID), ) serde2 = RedisSerde( IDList_TYPE, get_proto_serializer(), get_proto_deserializer(IDList), ) serde3 = RedisSerde( LOG_TYPE, get_proto_serializer(), get_proto_deserializer(LogVerbosity), ) serde4 = RedisSerde( FOO_TYPE, get_json_serializer(), get_json_deserializer(), ) self.nid_client = RedisFlatDict(self.mock_redis, serde1) self.idlist_client = RedisFlatDict(self.mock_redis, serde2) self.log_client = RedisFlatDict(self.mock_redis, serde3) self.foo_client = RedisFlatDict(self.mock_redis, serde4) # Set up and start state replicating loop grpc_client_manager = GRPCClientManager( service_name="state", service_stub=StateServiceStub, max_client_reuse=60, ) # mock the get_default_client function used to return the same # fakeredis object func_mock = mock.MagicMock(return_value=self.mock_redis) with mock.patch( 'magma.state.redis_dicts.get_default_client', func_mock, ): garbage_collector = GarbageCollector(service, grpc_client_manager) self.state_replicator = StateReplicator( service=service, garbage_collector=garbage_collector, grpc_client_manager=grpc_client_manager, ) self.state_replicator.start()