# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import copy, logging, pytest from common.Settings import get_setting from common.tests.EventTools import EVENT_REMOVE, check_events from common.tools.object_factory.Context import json_context_id from common.tools.object_factory.Device import json_device_id from common.tools.object_factory.Link import json_link_id from common.tools.object_factory.Topology import json_topology_id from context.client.ContextClient import ContextClient from context.client.EventsCollector import EventsCollector from common.proto.context_pb2 import ConfigActionEnum, ContextId, Device, DeviceId, Empty, LinkId, TopologyId, DeviceOperationalStatusEnum from device.client.DeviceClient import DeviceClient from .Objects import CONTEXT_ID, CONTEXTS, DEVICES, LINKS, TOPOLOGIES LOGGER = logging.getLogger(__name__) LOGGER.setLevel(logging.DEBUG) @pytest.fixture(scope='session') def context_client(): _client = ContextClient(get_setting('CONTEXTSERVICE_SERVICE_HOST'), get_setting('CONTEXTSERVICE_SERVICE_PORT_GRPC')) yield _client _client.close() @pytest.fixture(scope='session') def device_client(): _client = DeviceClient(get_setting('DEVICESERVICE_SERVICE_HOST'), get_setting('DEVICESERVICE_SERVICE_PORT_GRPC')) yield _client _client.close() def test_rules_delete( context_client : ContextClient, device_client : DeviceClient): # pylint: disable=redefined-outer-name # ----- Delete Devices and Validate Collected Events --------------------------------------------------------------- for device, _, _, deconf_rules in DEVICES: device_p4_with_deconf_rules = copy.deepcopy(device) device_p4_with_deconf_rules['device_config']['config_rules'].extend(deconf_rules) device_client.ConfigureDevice(Device(**device_p4_with_deconf_rules)) device_p4_with_operational_status = copy.deepcopy(device) device_p4_with_operational_status['device_operational_status'] = \ DeviceOperationalStatusEnum.DEVICEOPERATIONALSTATUS_DISABLED device_client.ConfigureDevice(Device(**device_p4_with_operational_status))