Loading src/device/tests/test_unitary_ietf_actn.py +12 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,11 @@ def test_device_ietf_actn_configure( retrieved_driver_config_rules = sorted(driver.GetConfig(), key=operator.itemgetter(0)) LOGGER.info('driver_config = {:s}'.format(str(retrieved_driver_config_rules))) assert isinstance(retrieved_driver_config_rules, list) retrieved_driver_config_rules = [ (resource_key, resource_value) for resource_key, resource_value in retrieved_driver_config_rules if resource_key != '/endpoints/endpoint[mgmt]' ] if len(retrieved_driver_config_rules) > 0: LOGGER.error('PRE DRIVER CONFIG RULES - Differences:\n{:s}'.format(str(retrieved_driver_config_rules))) assert len(retrieved_driver_config_rules) == 0 Loading Loading @@ -186,6 +191,7 @@ def test_device_ietf_actn_configure( retrieved_driver_config_rules = [ {'action': 1, 'custom': {'resource_key': resource_key, 'resource_value': resource_value}} for resource_key, resource_value in retrieved_driver_config_rules if resource_key != '/endpoints/endpoint[mgmt]' ] with open(DATA_FILE_CONFIG_RULES, 'r', encoding='UTF-8') as f: expected_driver_config_rules = sorted(json.load(f), key=lambda cr: cr['custom']['resource_key']) Loading Loading @@ -231,6 +237,7 @@ def test_device_ietf_actn_deconfigure( retrieved_driver_config_rules = [ {'action': 1, 'custom': {'resource_key': resource_key, 'resource_value': resource_value}} for resource_key, resource_value in retrieved_driver_config_rules if resource_key != '/endpoints/endpoint[mgmt]' ] with open(DATA_FILE_CONFIG_RULES, 'r', encoding='UTF-8') as f: expected_driver_config_rules = sorted(json.load(f), key=lambda cr: cr['custom']['resource_key']) Loading Loading @@ -266,6 +273,11 @@ def test_device_ietf_actn_deconfigure( retrieved_driver_config_rules = sorted(driver.GetConfig(), key=operator.itemgetter(0)) LOGGER.info('retrieved_driver_config_rules = {:s}'.format(str(retrieved_driver_config_rules))) assert isinstance(retrieved_driver_config_rules, list) retrieved_driver_config_rules = [ (resource_key, resource_value) for resource_key, resource_value in retrieved_driver_config_rules if resource_key != '/endpoints/endpoint[mgmt]' ] if len(retrieved_driver_config_rules) > 0: LOGGER.error('POST DRIVER CONFIG RULES - Differences:\n{:s}'.format(str(retrieved_driver_config_rules))) assert len(retrieved_driver_config_rules) == 0 Loading src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/L3VPN_Services.py +32 −5 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ # limitations under the License. import logging from typing import Dict from typing import Dict, List from flask import request from flask.json import jsonify from flask_restful import Resource Loading @@ -36,11 +36,40 @@ class L3VPN_Services(Resource): request_data : Dict = request.json LOGGER.debug('Request: {:s}'.format(str(request_data))) errors = list() if 'ietf-l3vpn-svc:l3vpn-services' in request_data: # processing multiple L3VPN service requests formatted as: #{ # "ietf-l3vpn-svc:l3vpn-services": { # "l3vpn-svc": [ # { # "service-id": "vpn1", # "vpn-services": { # "vpn-service": [ for l3vpn_svc in request_data['ietf-l3vpn-svc:l3vpn-services']['l3vpn-svc']: l3vpn_svc.pop('service-id', None) l3vpn_svc_request_data = {'ietf-l3vpn-svc:l3vpn-svc': l3vpn_svc} errors.extend(self._process_l3vpn(l3vpn_svc_request_data)) elif 'ietf-l3vpn-svc:l3vpn-svc' in request_data: # processing single (standard) L3VPN service request formatted as: #{ # "ietf-l3vpn-svc:l3vpn-svc": { # "vpn-services": { # "vpn-service": [ errors.extend(self._process_l3vpn(request_data)) else: errors.append('unexpected request: {:s}'.format(str(request_data))) response = jsonify(errors) response.status_code = HTTP_CREATED if len(errors) == 0 else HTTP_SERVERERROR return response def _process_l3vpn(self, request_data : Dict) -> List[Dict]: yang_validator = YangValidator('ietf-l3vpn-svc') request_data = yang_validator.parse_to_dict(request_data) yang_validator.destroy() errors = [] errors = list() for vpn_service in request_data['l3vpn-svc']['vpn-services']['vpn-service']: process_vpn_service(vpn_service, errors) Loading @@ -48,6 +77,4 @@ class L3VPN_Services(Resource): for site in request_data['l3vpn-svc']['sites']['site']: process_site(site, errors) response = jsonify(errors) response.status_code = HTTP_CREATED if len(errors) == 0 else HTTP_SERVERERROR return response return errors src/policy/.mvn/wrapper/maven-wrapper.properties +1 −1 Original line number Diff line number Diff line distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.2/apache-maven-3.8.2-bin.zip wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar src/policy/pom.xml +11 −3 Original line number Diff line number Diff line Loading @@ -56,9 +56,10 @@ <sonarsource-scanner-plugin.version>3.8.0.2131</sonarsource-scanner-plugin.version> <spotless-plugin.version>2.10.3</spotless-plugin.version> <versions-maven-plugin.version>2.8.1</versions-maven-plugin.version> <quarkus-maven-plugin.version>${quarkus.platform.version}</quarkus-maven-plugin.version> <quarkus-maven-plugin.version>3.1.3.Final</quarkus-maven-plugin.version> <quarkus-bootstrap-maven-version>2.16.12.Final</quarkus-bootstrap-maven-version> <!-- Third-party Dependencies --> <quarkus.platform.version>2.2.2.Final</quarkus.platform.version> <quarkus.platform.version>3.1.3.Final</quarkus.platform.version> </properties> <distributionManagement> Loading Loading @@ -151,6 +152,13 @@ <artifactId>quarkus-config-yaml</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency> <!-- Testing --> <dependency> <groupId>org.assertj</groupId> Loading Loading @@ -277,7 +285,7 @@ <plugin> <groupId>io.quarkus</groupId> <artifactId>quarkus-bootstrap-maven-plugin</artifactId> <version>${quarkus-maven-plugin.version}</version> <version>${quarkus-bootstrap-maven-version}</version> </plugin> <plugin> Loading src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java +16 −2 Original line number Diff line number Diff line Loading @@ -25,10 +25,10 @@ import context.ContextOuterClass.DeviceId; import context.ContextOuterClass.DeviceOperationalStatusEnum; import context.ContextOuterClass.Location.LocationCase; import context.ContextOuterClass.Uuid; import jakarta.inject.Singleton; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import javax.inject.Singleton; import kpi_sample_types.KpiSampleTypes; import monitoring.Monitoring; import monitoring.Monitoring.AlarmID; Loading Loading @@ -85,7 +85,6 @@ import org.etsi.tfs.policy.context.model.ServiceTypeEnum; import org.etsi.tfs.policy.context.model.SliceId; import org.etsi.tfs.policy.context.model.TopologyId; import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType; import org.etsi.tfs.policy.model.*; import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor; import org.etsi.tfs.policy.monitoring.model.AlarmResponse; import org.etsi.tfs.policy.monitoring.model.AlarmSubscription; Loading @@ -101,6 +100,21 @@ import org.etsi.tfs.policy.monitoring.model.MonitorKpiRequest; import org.etsi.tfs.policy.monitoring.model.StringKpiValue; import org.etsi.tfs.policy.monitoring.model.SubsDescriptor; import org.etsi.tfs.policy.monitoring.model.SubsResponse; import org.etsi.tfs.policy.policy.model.*; import org.etsi.tfs.policy.policy.model.BooleanOperator; import org.etsi.tfs.policy.policy.model.NumericalOperator; import org.etsi.tfs.policy.policy.model.PolicyRule; import org.etsi.tfs.policy.policy.model.PolicyRuleAction; import org.etsi.tfs.policy.policy.model.PolicyRuleActionConfig; import org.etsi.tfs.policy.policy.model.PolicyRuleActionEnum; import org.etsi.tfs.policy.policy.model.PolicyRuleBasic; import org.etsi.tfs.policy.policy.model.PolicyRuleCondition; import org.etsi.tfs.policy.policy.model.PolicyRuleDevice; import org.etsi.tfs.policy.policy.model.PolicyRuleService; import org.etsi.tfs.policy.policy.model.PolicyRuleState; import org.etsi.tfs.policy.policy.model.PolicyRuleStateEnum; import org.etsi.tfs.policy.policy.model.PolicyRuleTypeDevice; import org.etsi.tfs.policy.policy.model.PolicyRuleTypeService; import policy.Policy; import policy.Policy.PolicyRuleId; import policy.PolicyAction; Loading Loading
src/device/tests/test_unitary_ietf_actn.py +12 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,11 @@ def test_device_ietf_actn_configure( retrieved_driver_config_rules = sorted(driver.GetConfig(), key=operator.itemgetter(0)) LOGGER.info('driver_config = {:s}'.format(str(retrieved_driver_config_rules))) assert isinstance(retrieved_driver_config_rules, list) retrieved_driver_config_rules = [ (resource_key, resource_value) for resource_key, resource_value in retrieved_driver_config_rules if resource_key != '/endpoints/endpoint[mgmt]' ] if len(retrieved_driver_config_rules) > 0: LOGGER.error('PRE DRIVER CONFIG RULES - Differences:\n{:s}'.format(str(retrieved_driver_config_rules))) assert len(retrieved_driver_config_rules) == 0 Loading Loading @@ -186,6 +191,7 @@ def test_device_ietf_actn_configure( retrieved_driver_config_rules = [ {'action': 1, 'custom': {'resource_key': resource_key, 'resource_value': resource_value}} for resource_key, resource_value in retrieved_driver_config_rules if resource_key != '/endpoints/endpoint[mgmt]' ] with open(DATA_FILE_CONFIG_RULES, 'r', encoding='UTF-8') as f: expected_driver_config_rules = sorted(json.load(f), key=lambda cr: cr['custom']['resource_key']) Loading Loading @@ -231,6 +237,7 @@ def test_device_ietf_actn_deconfigure( retrieved_driver_config_rules = [ {'action': 1, 'custom': {'resource_key': resource_key, 'resource_value': resource_value}} for resource_key, resource_value in retrieved_driver_config_rules if resource_key != '/endpoints/endpoint[mgmt]' ] with open(DATA_FILE_CONFIG_RULES, 'r', encoding='UTF-8') as f: expected_driver_config_rules = sorted(json.load(f), key=lambda cr: cr['custom']['resource_key']) Loading Loading @@ -266,6 +273,11 @@ def test_device_ietf_actn_deconfigure( retrieved_driver_config_rules = sorted(driver.GetConfig(), key=operator.itemgetter(0)) LOGGER.info('retrieved_driver_config_rules = {:s}'.format(str(retrieved_driver_config_rules))) assert isinstance(retrieved_driver_config_rules, list) retrieved_driver_config_rules = [ (resource_key, resource_value) for resource_key, resource_value in retrieved_driver_config_rules if resource_key != '/endpoints/endpoint[mgmt]' ] if len(retrieved_driver_config_rules) > 0: LOGGER.error('POST DRIVER CONFIG RULES - Differences:\n{:s}'.format(str(retrieved_driver_config_rules))) assert len(retrieved_driver_config_rules) == 0 Loading
src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/L3VPN_Services.py +32 −5 Original line number Diff line number Diff line Loading @@ -13,7 +13,7 @@ # limitations under the License. import logging from typing import Dict from typing import Dict, List from flask import request from flask.json import jsonify from flask_restful import Resource Loading @@ -36,11 +36,40 @@ class L3VPN_Services(Resource): request_data : Dict = request.json LOGGER.debug('Request: {:s}'.format(str(request_data))) errors = list() if 'ietf-l3vpn-svc:l3vpn-services' in request_data: # processing multiple L3VPN service requests formatted as: #{ # "ietf-l3vpn-svc:l3vpn-services": { # "l3vpn-svc": [ # { # "service-id": "vpn1", # "vpn-services": { # "vpn-service": [ for l3vpn_svc in request_data['ietf-l3vpn-svc:l3vpn-services']['l3vpn-svc']: l3vpn_svc.pop('service-id', None) l3vpn_svc_request_data = {'ietf-l3vpn-svc:l3vpn-svc': l3vpn_svc} errors.extend(self._process_l3vpn(l3vpn_svc_request_data)) elif 'ietf-l3vpn-svc:l3vpn-svc' in request_data: # processing single (standard) L3VPN service request formatted as: #{ # "ietf-l3vpn-svc:l3vpn-svc": { # "vpn-services": { # "vpn-service": [ errors.extend(self._process_l3vpn(request_data)) else: errors.append('unexpected request: {:s}'.format(str(request_data))) response = jsonify(errors) response.status_code = HTTP_CREATED if len(errors) == 0 else HTTP_SERVERERROR return response def _process_l3vpn(self, request_data : Dict) -> List[Dict]: yang_validator = YangValidator('ietf-l3vpn-svc') request_data = yang_validator.parse_to_dict(request_data) yang_validator.destroy() errors = [] errors = list() for vpn_service in request_data['l3vpn-svc']['vpn-services']['vpn-service']: process_vpn_service(vpn_service, errors) Loading @@ -48,6 +77,4 @@ class L3VPN_Services(Resource): for site in request_data['l3vpn-svc']['sites']['site']: process_site(site, errors) response = jsonify(errors) response.status_code = HTTP_CREATED if len(errors) == 0 else HTTP_SERVERERROR return response return errors
src/policy/.mvn/wrapper/maven-wrapper.properties +1 −1 Original line number Diff line number Diff line distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.2/apache-maven-3.8.2-bin.zip wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
src/policy/pom.xml +11 −3 Original line number Diff line number Diff line Loading @@ -56,9 +56,10 @@ <sonarsource-scanner-plugin.version>3.8.0.2131</sonarsource-scanner-plugin.version> <spotless-plugin.version>2.10.3</spotless-plugin.version> <versions-maven-plugin.version>2.8.1</versions-maven-plugin.version> <quarkus-maven-plugin.version>${quarkus.platform.version}</quarkus-maven-plugin.version> <quarkus-maven-plugin.version>3.1.3.Final</quarkus-maven-plugin.version> <quarkus-bootstrap-maven-version>2.16.12.Final</quarkus-bootstrap-maven-version> <!-- Third-party Dependencies --> <quarkus.platform.version>2.2.2.Final</quarkus.platform.version> <quarkus.platform.version>3.1.3.Final</quarkus.platform.version> </properties> <distributionManagement> Loading Loading @@ -151,6 +152,13 @@ <artifactId>quarkus-config-yaml</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency> <!-- Testing --> <dependency> <groupId>org.assertj</groupId> Loading Loading @@ -277,7 +285,7 @@ <plugin> <groupId>io.quarkus</groupId> <artifactId>quarkus-bootstrap-maven-plugin</artifactId> <version>${quarkus-maven-plugin.version}</version> <version>${quarkus-bootstrap-maven-version}</version> </plugin> <plugin> Loading
src/policy/src/main/java/org/etsi/tfs/policy/Serializer.java +16 −2 Original line number Diff line number Diff line Loading @@ -25,10 +25,10 @@ import context.ContextOuterClass.DeviceId; import context.ContextOuterClass.DeviceOperationalStatusEnum; import context.ContextOuterClass.Location.LocationCase; import context.ContextOuterClass.Uuid; import jakarta.inject.Singleton; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import javax.inject.Singleton; import kpi_sample_types.KpiSampleTypes; import monitoring.Monitoring; import monitoring.Monitoring.AlarmID; Loading Loading @@ -85,7 +85,6 @@ import org.etsi.tfs.policy.context.model.ServiceTypeEnum; import org.etsi.tfs.policy.context.model.SliceId; import org.etsi.tfs.policy.context.model.TopologyId; import org.etsi.tfs.policy.kpi_sample_types.model.KpiSampleType; import org.etsi.tfs.policy.model.*; import org.etsi.tfs.policy.monitoring.model.AlarmDescriptor; import org.etsi.tfs.policy.monitoring.model.AlarmResponse; import org.etsi.tfs.policy.monitoring.model.AlarmSubscription; Loading @@ -101,6 +100,21 @@ import org.etsi.tfs.policy.monitoring.model.MonitorKpiRequest; import org.etsi.tfs.policy.monitoring.model.StringKpiValue; import org.etsi.tfs.policy.monitoring.model.SubsDescriptor; import org.etsi.tfs.policy.monitoring.model.SubsResponse; import org.etsi.tfs.policy.policy.model.*; import org.etsi.tfs.policy.policy.model.BooleanOperator; import org.etsi.tfs.policy.policy.model.NumericalOperator; import org.etsi.tfs.policy.policy.model.PolicyRule; import org.etsi.tfs.policy.policy.model.PolicyRuleAction; import org.etsi.tfs.policy.policy.model.PolicyRuleActionConfig; import org.etsi.tfs.policy.policy.model.PolicyRuleActionEnum; import org.etsi.tfs.policy.policy.model.PolicyRuleBasic; import org.etsi.tfs.policy.policy.model.PolicyRuleCondition; import org.etsi.tfs.policy.policy.model.PolicyRuleDevice; import org.etsi.tfs.policy.policy.model.PolicyRuleService; import org.etsi.tfs.policy.policy.model.PolicyRuleState; import org.etsi.tfs.policy.policy.model.PolicyRuleStateEnum; import org.etsi.tfs.policy.policy.model.PolicyRuleTypeDevice; import org.etsi.tfs.policy.policy.model.PolicyRuleTypeService; import policy.Policy; import policy.Policy.PolicyRuleId; import policy.PolicyAction; Loading