diff --git a/src/common/tests/MockServicerImpl_Context.py b/src/common/tests/MockServicerImpl_Context.py index 98a216850a757e0c21c44d2e295cb4b93c538e05..6e749e17c156a41965667238dbd98189c71f9acb 100644 --- a/src/common/tests/MockServicerImpl_Context.py +++ b/src/common/tests/MockServicerImpl_Context.py @@ -25,12 +25,18 @@ from common.proto.context_pb2 import ( Slice, SliceEvent, SliceFilter, SliceId, SliceIdList, SliceList, Topology, TopologyDetails, TopologyEvent, TopologyId, TopologyIdList, TopologyList) from common.proto.context_pb2_grpc import ContextServiceServicer +from common.proto.policy_pb2 import ( + PolicyRule, + PolicyRuleId, + PolicyRuleIdList, + PolicyRuleList, +) from common.tools.grpc.Tools import grpc_message_to_json, grpc_message_to_json_string from common.tools.object_factory.Device import json_device_id from common.tools.object_factory.Link import json_link_id from .InMemoryObjectDatabase import InMemoryObjectDatabase from .MockMessageBroker import ( - TOPIC_CONNECTION, TOPIC_CONTEXT, TOPIC_DEVICE, TOPIC_LINK, TOPIC_SERVICE, TOPIC_SLICE, TOPIC_TOPOLOGY, + TOPIC_CONNECTION, TOPIC_CONTEXT, TOPIC_DEVICE, TOPIC_LINK, TOPIC_SERVICE, TOPIC_SLICE, TOPIC_TOPOLOGY, TOPIC_POLICY, MockMessageBroker, notify_event) LOGGER = logging.getLogger(__name__) @@ -615,3 +621,81 @@ class MockServicerImpl_Context(ContextServiceServicer): def GetConnectionEvents(self, request: Empty, context : grpc.ServicerContext) -> Iterator[ConnectionEvent]: LOGGER.debug('[GetConnectionEvents] request={:s}'.format(grpc_message_to_json_string(request))) for message in self.msg_broker.consume({TOPIC_CONNECTION}): yield ConnectionEvent(**json.loads(message.content)) + + def ListPolicyRuleIds(self, request: Empty, context: grpc.ServicerContext): + LOGGER.debug( + "[ListPolicyRuleIds] request={:s}".format( + grpc_message_to_json_string(request) + ) + ) + reply = PolicyRuleIdList( + policyRuleIdList=[ + getattr( + policy_rule, policy_rule.WhichOneof("policy_rule") + ).policyRuleBasic.policyRuleId + for policy_rule in self.obj_db.get_entries("policy") + ] + ) + LOGGER.debug( + "[ListPolicyRuleIds] reply={:s}".format(grpc_message_to_json_string(reply)) + ) + return reply + + def ListPolicyRules(self, request: Empty, context: grpc.ServicerContext): + LOGGER.debug( + "[ListPolicyRules] request={:s}".format( + grpc_message_to_json_string(request) + ) + ) + reply = PolicyRuleList(policyRules=self.obj_db.get_entries("policy")) + LOGGER.debug( + "[ListPolicyRules] reply={:s}".format(grpc_message_to_json_string(reply)) + ) + return reply + + def GetPolicyRule(self, request: PolicyRuleId, context: grpc.ServicerContext): + LOGGER.debug( + "[GetPolicyRule] request={:s}".format(grpc_message_to_json_string(request)) + ) + reply = self.obj_db.get_entry("policy_rule", request.uuid.uuid, context) + LOGGER.debug( + "[GetPolicyRule] reply={:s}".format(grpc_message_to_json_string(reply)) + ) + return reply + + def SetPolicyRule(self, request: PolicyRule, context: grpc.ServicerContext): + LOGGER.debug( + "[SetPolicyRule] request={:s}".format(grpc_message_to_json_string(request)) + ) + policy_type = request.WhichOneof("policy_rule") + reply, _ = self._set( + request, + "policy", + getattr(request, policy_type).policyRuleBasic.policyRuleId.uuid.uuid, + f"{policy_type}.policyRuleBasic.policyRuleId", + TOPIC_POLICY, + ) + LOGGER.debug( + "[SetPolicyRule] reply={:s}".format(grpc_message_to_json_string(reply)) + ) + return reply + + def RemovePolicyRule(self, request: PolicyRuleId, context: grpc.ServicerContext): + LOGGER.debug( + "[RemovePolicyRule] request={:s}".format( + grpc_message_to_json_string(request) + ) + ) + policy_type = request.WhichOneof("policy_rule") + reply = self._del( + request, + "policy", + getattr(request, policy_type).policyRuleBasic.policyRuleId.uuid.uuid, + f"{policy_type}.policyRuleBasic.policyRuleId", + TOPIC_CONTEXT, + context, + ) + LOGGER.debug( + "[RemovePolicyRule] reply={:s}".format(grpc_message_to_json_string(reply)) + ) + return reply \ No newline at end of file diff --git a/src/common/type_checkers/Assertions.py b/src/common/type_checkers/Assertions.py index 286ae179d325b6e70d6ebf509de92e354ba42bc8..98987f234ee40ff451d5034fc8ce5b88cba59ac2 100644 --- a/src/common/type_checkers/Assertions.py +++ b/src/common/type_checkers/Assertions.py @@ -192,6 +192,15 @@ def validate_connection_id(message): assert 'connection_uuid' in message validate_uuid(message['connection_uuid']) +def validate_slice_id(message, context_uuid = None): + assert isinstance(message, dict) + assert len(message.keys()) == 2 + assert 'context_id' in message + validate_context_id(message['context_id']) + if context_uuid is not None: assert message['context_id']['context_uuid']['uuid'] == context_uuid + assert 'slice_uuid' in message + validate_uuid(message['slice_uuid']) + # ----- Lists of Identifiers ------------------------------------------------------------------------------------------- @@ -242,7 +251,9 @@ def validate_connection_ids(message): def validate_context(message): assert isinstance(message, dict) - assert len(message.keys()) == 3 + assert len(message.keys()) == 5 + assert 'name' in message + assert isinstance(message['name'], str) assert 'context_id' in message validate_context_id(message['context_id']) context_uuid = message['context_id']['context_uuid']['uuid'] @@ -252,6 +263,9 @@ def validate_context(message): assert 'topology_ids' in message assert isinstance(message['topology_ids'], list) for topology_id in message['topology_ids']: validate_topology_id(topology_id, context_uuid=context_uuid) + assert 'slice_ids' in message + assert isinstance(message['slice_ids'], list) + for slice_id in message['slice_ids']: validate_slice_id(slice_id, context_uuid=context_uuid) def validate_service_state(message): assert isinstance(message, dict) diff --git a/src/nbi/tests/test_debug_api.py b/src/nbi/tests/test_debug_api.py index e284992618a96388371b69b7b0c2a8c4fcaaba70..ed788f469bc0a6ea79ac4448673cf505e39d05d7 100644 --- a/src/nbi/tests/test_debug_api.py +++ b/src/nbi/tests/test_debug_api.py @@ -13,6 +13,7 @@ # limitations under the License. import logging, os, pytest, time, urllib +import pprint from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME, ServiceNameEnum from common.proto.context_pb2 import Connection, Context, Device, Link, Service, Slice, Topology from common.proto.policy_pb2 import PolicyRuleIdList, PolicyRuleId, PolicyRuleList, PolicyRule @@ -25,17 +26,35 @@ from common.type_checkers.Assertions import ( validate_contexts, validate_device, validate_device_ids, validate_devices, validate_link, validate_link_ids, validate_links, validate_service, validate_service_ids, validate_services, validate_topologies, validate_topology, validate_topology_ids) -from context.client.ContextClient import ContextClient -from nbi.tests.PrepareTestScenario import do_rest_get_request +from nbi.tests.PrepareTestScenario import do_rest_get_request, context_client, nbi_service_rest +from ..service.rest_server.RestServer import RestServer from .MockService_Dependencies import MockService_Dependencies -from .Objects import ( - CONNECTION_R1_R3, CONNECTION_R1_R3_ID, CONNECTION_R1_R3_UUID, CONTEXT, CONTEXT_ID, DEVICE_R1, DEVICE_R1_ID, - DEVICE_R1_UUID, DEVICE_R2, DEVICE_R2_ID, DEVICE_R2_UUID, DEVICE_R3, DEVICE_R3_ID, DEVICE_R3_UUID, LINK_R1_R2, - LINK_R1_R2_ID, LINK_R1_R2_UUID, SERVICE_R1_R2, SERVICE_R1_R2_ID, SERVICE_R1_R2_UUID, SERVICE_R1_R3, - SERVICE_R1_R3_ID, SERVICE_R1_R3_UUID, SERVICE_R2_R3, SERVICE_R2_R3_ID, SERVICE_R2_R3_UUID, SLICE_R1_R3, TOPOLOGY, - TOPOLOGY_ID, POLICY_RULE, POLICY_RULE_ID, POLICY_RULE_UUID +from context.tests.Objects import ( + CONNECTION_R1_R3, CONTEXT, DEVICE_R1, DEVICE_R2, DEVICE_R3, LINK_R1_R2, LINK_R1_R3, LINK_R2_R3, SERVICE_R1_R2, SERVICE_R1_R3, + SERVICE_R2_R3, SLICE_R1_R3, TOPOLOGY ) - +from ..service.rest_server.nbi_plugins.debug_api import URL_PREFIX +# from context.client.ContextClient import ContextClient +# from ..service.rest_server.nbi_plugins.debug_api import RESOURCES + +# connection_r1_r3_uuid = '' +# policyrule_uuid = '' +# slice_r1_r3_uuid = '' +# service_r1_r2_uuid = '' +# service_r1_r3_uuid = '' +# link_r1_r2_uuid = '' +# device_r1_uuid = '' + +def pytest_namespace(): + return { + 'connection_r1_r3_uuid' : '', + 'policyrule_uuid' : '', + 'slice_r1_r3_uuid' : '', + 'service_r1_r2_uuid' : '', + 'service_r1_r3_uuid' : '', + 'link_r1_r2_uuid' : '', + 'device_r1_uuid' : '', + } @pytest.fixture(scope='session') def mock_service(): @@ -61,160 +80,143 @@ os.environ[get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_HOST os.environ[get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_GRPC)] = str(GRPC_PORT) os.environ[get_env_var_name(ServiceNameEnum.CONTEXT, ENVVAR_SUFIX_SERVICE_PORT_HTTP)] = str(HTTP_PORT) -@pytest.fixture(scope='session') -def context_service_grpc(): - _service = ContextService(context_s_mb[0], context_s_mb[1]) - _service.start() - yield _service - _service.stop() - -@pytest.fixture(scope='session') -def context_service_rest(): - database = context_db_mb[0] - _rest_server = RestServer() - for endpoint_name, resource_class, resource_url in RESOURCES: - _rest_server.add_resource(resource_class, resource_url, endpoint=endpoint_name, resource_class_args=(database,)) - _rest_server.start() - time.sleep(1) # bring time for the server to start - yield _rest_server - _rest_server.shutdown() - _rest_server.join() - -@pytest.fixture(scope='session') -def context_client_grpc(context_service_grpc : ContextService): # pylint: disable=redefined-outer-name - _client = ContextClient() - yield _client - _client.close() - -def test_populate_database(): - client = ContextClient(host=LOCAL_HOST, port=GRPC_PORT) - client.SetContext(Context(**CONTEXT)) - client.SetTopology(Topology(**TOPOLOGY)) - client.SetDevice(Device(**DEVICE_R1)) - client.SetDevice(Device(**DEVICE_R2)) - client.SetDevice(Device(**DEVICE_R3)) - client.SetLink(Link(**LINK_R1_R2)) - client.SetLink(Link(**LINK_R1_R3)) - client.SetLink(Link(**LINK_R2_R3)) - client.SetService(Service(**SERVICE_R1_R2)) - client.SetService(Service(**SERVICE_R1_R3)) - client.SetService(Service(**SERVICE_R2_R3)) - client.SetSlice(Slice(**SLICE_R1_R3)) - client.SetConnection(Connection(**CONNECTION_R1_R3)) - -def test_rest_get_context_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - reply = do_rest_get_request('/context_ids') +def test_populate_database(context_client): + set_context_response = context_client.SetContext(Context(**CONTEXT)) + pytest.connection_r1_r3_uuid = set_context_response.context_uuid.uuid + context_client.SetTopology(Topology(**TOPOLOGY)) + set_device_r1_response = context_client.SetDevice(Device(**DEVICE_R1)) + pytest.device_r1_uuid = set_device_r1_response.device_uuid.uuid + context_client.SetDevice(Device(**DEVICE_R2)) + context_client.SetDevice(Device(**DEVICE_R3)) + set_link_r1_r2_response = context_client.SetLink(Link(**LINK_R1_R2)) + pytest.link_r1_r2_uuid = set_link_r1_r2_response.link_uuid.uuid + context_client.SetLink(Link(**LINK_R1_R3)) + context_client.SetLink(Link(**LINK_R2_R3)) + set_service_r1_r2_response = context_client.SetService(Service(**SERVICE_R1_R2)) + pytest.service_r1_r2_uuid = set_service_r1_r2_response.service_uuid.uuid + set_service_r1_r3_response = context_client.SetService(Service(**SERVICE_R1_R3)) + pytest.service_r1_r3_uuid = set_service_r1_r3_response.service_uuid.uuid + context_client.SetService(Service(**SERVICE_R2_R3)) + set_slice_response = context_client.SetSlice(Slice(**SLICE_R1_R3)) + pytest.slice_r1_r3_uuid = set_slice_response.slice_uuid.uuid + context_client.SetConnection(Connection(**CONNECTION_R1_R3)) + +def test_rest_get_context_ids(nbi_service_rest: RestServer): # pylint: disable=redefined-outer-name + reply = do_rest_get_request(URL_PREFIX + '/context_ids') validate_context_ids(reply) -def test_rest_get_contexts(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - reply = do_rest_get_request('/contexts') +def test_rest_get_contexts(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name + reply = do_rest_get_request(URL_PREFIX + '/contexts') + # LOGGER.warning(reply['contexts'][0]['service_ids'][0]) + # LOGGER.warning(reply['contexts'][0]['service_ids'][0].keys()) + pprint.pprint(reply) validate_contexts(reply) -def test_rest_get_context(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/context/{:s}'.format(context_uuid)) - validate_context(reply) - -def test_rest_get_topology_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/context/{:s}/topology_ids'.format(context_uuid)) - validate_topology_ids(reply) - -def test_rest_get_topologies(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/context/{:s}/topologies'.format(context_uuid)) - validate_topologies(reply) - -def test_rest_get_topology(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - topology_uuid = urllib.parse.quote(DEFAULT_TOPOLOGY_NAME) - reply = do_rest_get_request('/context/{:s}/topology/{:s}'.format(context_uuid, topology_uuid)) - validate_topology(reply, num_devices=3, num_links=3) - -def test_rest_get_service_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/context/{:s}/service_ids'.format(context_uuid)) - validate_service_ids(reply) - -def test_rest_get_services(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/context/{:s}/services'.format(context_uuid)) - validate_services(reply) - -def test_rest_get_service(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - service_uuid = urllib.parse.quote(SERVICE_R1_R2_UUID, safe='') - reply = do_rest_get_request('/context/{:s}/service/{:s}'.format(context_uuid, service_uuid)) - validate_service(reply) - -def test_rest_get_slice_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/context/{:s}/slice_ids'.format(context_uuid)) - #validate_slice_ids(reply) - -def test_rest_get_slices(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - reply = do_rest_get_request('/context/{:s}/slices'.format(context_uuid)) - #validate_slices(reply) - -def test_rest_get_slice(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - slice_uuid = urllib.parse.quote(SLICE_R1_R3_UUID, safe='') - reply = do_rest_get_request('/context/{:s}/slice/{:s}'.format(context_uuid, slice_uuid)) - #validate_slice(reply) - -def test_rest_get_device_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - reply = do_rest_get_request('/device_ids') - validate_device_ids(reply) - -def test_rest_get_devices(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - reply = do_rest_get_request('/devices') - validate_devices(reply) - -def test_rest_get_device(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - device_uuid = urllib.parse.quote(DEVICE_R1_UUID, safe='') - reply = do_rest_get_request('/device/{:s}'.format(device_uuid)) - validate_device(reply) - -def test_rest_get_link_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - reply = do_rest_get_request('/link_ids') - validate_link_ids(reply) - -def test_rest_get_links(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - reply = do_rest_get_request('/links') - validate_links(reply) - -def test_rest_get_link(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - link_uuid = urllib.parse.quote(LINK_R1_R2_UUID, safe='') - reply = do_rest_get_request('/link/{:s}'.format(link_uuid)) - validate_link(reply) - -def test_rest_get_connection_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - service_uuid = urllib.parse.quote(SERVICE_R1_R3_UUID, safe='') - reply = do_rest_get_request('/context/{:s}/service/{:s}/connection_ids'.format(context_uuid, service_uuid)) - validate_connection_ids(reply) - -def test_rest_get_connections(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) - service_uuid = urllib.parse.quote(SERVICE_R1_R3_UUID, safe='') - reply = do_rest_get_request('/context/{:s}/service/{:s}/connections'.format(context_uuid, service_uuid)) - validate_connections(reply) - -def test_rest_get_connection(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - connection_uuid = urllib.parse.quote(CONNECTION_R1_R3_UUID, safe='') - reply = do_rest_get_request('/connection/{:s}'.format(connection_uuid)) - validate_connection(reply) - -def test_rest_get_policyrule_ids(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - reply = do_rest_get_request('/policyrule_ids') - #validate_policyrule_ids(reply) - -def test_rest_get_policyrules(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - reply = do_rest_get_request('/policyrules') - #validate_policyrules(reply) - -def test_rest_get_policyrule(context_service_rest : RestServer): # pylint: disable=redefined-outer-name - policyrule_uuid = urllib.parse.quote(POLICYRULE_UUID, safe='') - reply = do_rest_get_request('/policyrule/{:s}'.format(policyrule_uuid)) - #validate_policyrule(reply) +# def test_rest_get_context(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}'.format(context_uuid)) +# validate_context(reply) + +# def test_rest_get_topology_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/topology_ids'.format(context_uuid)) +# validate_topology_ids(reply) + +# def test_rest_get_topologies(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/topologies'.format(context_uuid)) +# validate_topologies(reply) + +# def test_rest_get_topology(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# topology_uuid = urllib.parse.quote(DEFAULT_TOPOLOGY_NAME) +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/topology/{:s}'.format(context_uuid, topology_uuid)) +# validate_topology(reply, num_devices=3, num_links=3) + +# def test_rest_get_service_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/service_ids'.format(context_uuid)) +# validate_service_ids(reply) + +# def test_rest_get_services(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/services'.format(context_uuid)) +# validate_services(reply) + +# def test_rest_get_service(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# service_uuid = urllib.parse.quote(service_r1_r2_uuid, safe='') +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/service/{:s}'.format(context_uuid, service_uuid)) +# validate_service(reply) + +# def test_rest_get_slice_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/slice_ids'.format(context_uuid)) +# #validate_slice_ids(reply) + +# def test_rest_get_slices(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/slices'.format(context_uuid)) +# #validate_slices(reply) + +# def test_rest_get_slice(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# slice_uuid = urllib.parse.quote(slice_r1_r3_uuid, safe='') +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/slice/{:s}'.format(context_uuid, slice_uuid)) +# #validate_slice(reply) + +# def test_rest_get_device_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# reply = do_rest_get_request(URL_PREFIX + '/device_ids') +# validate_device_ids(reply) + +# def test_rest_get_devices(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# reply = do_rest_get_request(URL_PREFIX + '/devices') +# validate_devices(reply) + +# def test_rest_get_device(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# device_uuid = urllib.parse.quote(device_r1_uuid, safe='') +# reply = do_rest_get_request(URL_PREFIX + '/device/{:s}'.format(device_uuid)) +# validate_device(reply) + +# def test_rest_get_link_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# reply = do_rest_get_request(URL_PREFIX + '/link_ids') +# validate_link_ids(reply) + +# def test_rest_get_links(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# reply = do_rest_get_request(URL_PREFIX + '/links') +# validate_links(reply) + +# def test_rest_get_link(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# link_uuid = urllib.parse.quote(link_r1_r2_uuid, safe='') +# reply = do_rest_get_request(URL_PREFIX + '/link/{:s}'.format(link_uuid)) +# validate_link(reply) + +# def test_rest_get_connection_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# service_uuid = urllib.parse.quote(service_r1_r3_uuid, safe='') +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/service/{:s}/connection_ids'.format(context_uuid, service_uuid)) +# validate_connection_ids(reply) + +# def test_rest_get_connections(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# context_uuid = urllib.parse.quote(DEFAULT_CONTEXT_NAME) +# service_uuid = urllib.parse.quote(service_r1_r3_uuid, safe='') +# reply = do_rest_get_request(URL_PREFIX + '/context/{:s}/service/{:s}/connections'.format(context_uuid, service_uuid)) +# validate_connections(reply) + +# def test_rest_get_connection(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# connection_uuid = urllib.parse.quote(connection_r1_r3_uuid, safe='') +# reply = do_rest_get_request(URL_PREFIX + '/connection/{:s}'.format(connection_uuid)) +# validate_connection(reply) + +# def test_rest_get_policyrule_ids(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# reply = do_rest_get_request(URL_PREFIX + '/policyrule_ids') +# #validate_policyrule_ids(reply) + +# def test_rest_get_policyrules(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# reply = do_rest_get_request(URL_PREFIX + '/policyrules') +# #validate_policyrules(reply) + +# def test_rest_get_policyrule(nbi_service_rest : RestServer): # pylint: disable=redefined-outer-name +# policyrule_uuid_quoted = urllib.parse.quote(policyrule_uuid, safe='') +# reply = do_rest_get_request(URL_PREFIX + '/policyrule/{:s}'.format(policyrule_uuid_quoted)) +# #validate_policyrule(reply)