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 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