Loading src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py +174 −60 Original line number Diff line number Diff line Loading @@ -15,33 +15,71 @@ import json from flask.json import jsonify from flask_restful import Resource, request from werkzeug.exceptions import BadRequest from common.proto.context_pb2 import Empty from common.tools.grpc.Tools import grpc_message_to_json from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from slice.client.SliceClient import SliceClient from .Tools import ( format_grpc_to_json, grpc_connection_id, grpc_context_id, grpc_device_id, grpc_link_id, grpc_policy_rule_id, grpc_service_id, grpc_service, grpc_slice_id, grpc_topology_id) format_grpc_to_json, grpc_connection_id, grpc_context, grpc_context_id, grpc_device, grpc_device_id, grpc_link, grpc_link_id, grpc_policy_rule_id, grpc_service_id, grpc_service, grpc_slice, grpc_slice_id, grpc_topology, grpc_topology_id ) class _Resource(Resource): def __init__(self) -> None: super().__init__() self.client = ContextClient() self.context_client = ContextClient() self.device_client = DeviceClient() self.service_client = ServiceClient() self.slice_client = SliceClient() class ContextIds(_Resource): def get(self): return format_grpc_to_json(self.client.ListContextIds(Empty())) return format_grpc_to_json(self.context_client.ListContextIds(Empty())) class Contexts(_Resource): def get(self): return format_grpc_to_json(self.client.ListContexts(Empty())) return format_grpc_to_json(self.context_client.ListContexts(Empty())) def post(self): json_requests = request.get_json() if 'contexts' in json_requests: json_requests = json_requests['contexts'] return [ format_grpc_to_json(self.context_client.SetContext(grpc_context(context))) for context in json_requests ] class Context(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.context_client.GetContext(grpc_context_id(context_uuid))) def put(self, context_uuid : str): context = request.get_json() if context_uuid != context['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') return format_grpc_to_json(self.context_client.SetContext(grpc_context(context))) def delete(self, context_uuid : str): return format_grpc_to_json(self.context_client.RemoveContext(grpc_context_id(context_uuid))) class DummyContexts(_Resource): def get(self): contexts = grpc_message_to_json(self.client.ListContexts(Empty()), use_integers_for_enums=True)['contexts'] devices = grpc_message_to_json(self.client.ListDevices(Empty()), use_integers_for_enums=True)['devices'] links = grpc_message_to_json(self.client.ListLinks(Empty()), use_integers_for_enums=True)['links'] contexts = grpc_message_to_json( self.context_client.ListContexts(Empty()), use_integers_for_enums=True )['contexts'] devices = grpc_message_to_json( self.context_client.ListDevices(Empty()), use_integers_for_enums=True )['devices'] links = grpc_message_to_json( self.context_client.ListLinks(Empty()), use_integers_for_enums=True )['links'] topologies = list() slices = list() Loading @@ -53,17 +91,17 @@ class DummyContexts(_Resource): context_id = grpc_context_id(context_uuid) topologies.extend(grpc_message_to_json( self.client.ListTopologies(context_id), self.context_client.ListTopologies(context_id), use_integers_for_enums=True )['topologies']) slices.extend(grpc_message_to_json( self.client.ListSlices(context_id), self.context_client.ListSlices(context_id), use_integers_for_enums=True )['slices']) context_services = grpc_message_to_json( self.client.ListServices(context_id), self.context_client.ListServices(context_id), use_integers_for_enums=True )['services'] services.extend(context_services) Loading @@ -72,7 +110,7 @@ class DummyContexts(_Resource): service_uuid = service['service_id']['service_uuid']['uuid'] service_id = grpc_service_id(context_uuid, service_uuid) connections.extend(grpc_message_to_json( self.client.ListConnections(service_id), self.context_client.ListConnections(service_id), use_integers_for_enums=True )['connections']) Loading @@ -97,115 +135,191 @@ class DummyContexts(_Resource): if len(connections) > 0: dummy_context['connections'] = connections return jsonify(dummy_context) class Context(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.GetContext(grpc_context_id(context_uuid))) class TopologyIds(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListTopologyIds(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListTopologyIds(grpc_context_id(context_uuid))) class Topologies(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListTopologies(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListTopologies(grpc_context_id(context_uuid))) def post(self, context_uuid : str): json_requests = request.get_json() if 'topologies' in json_requests: json_requests = json_requests['topologies'] for topology in json_requests: if context_uuid != topology['topology_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') return [ format_grpc_to_json(self.context_client.SetTopology(grpc_topology(**topology))) for topology in json_requests ] class Topology(_Resource): def get(self, context_uuid : str, topology_uuid : str): return format_grpc_to_json(self.client.GetTopology(grpc_topology_id(context_uuid, topology_uuid))) return format_grpc_to_json(self.context_client.GetTopology(grpc_topology_id(context_uuid, topology_uuid))) def put(self, context_uuid : str, topology_uuid : str): topology = request.get_json() if context_uuid != topology['topology_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') if topology_uuid != topology['topology_id']['topology_uuid']['uuid']: raise BadRequest('Mismatching topology_uuid') return format_grpc_to_json(self.context_client.SetTopology(grpc_topology(topology))) def delete(self, context_uuid : str, topology_uuid : str): return format_grpc_to_json(self.context_client.RemoveTopology(grpc_topology_id(context_uuid, topology_uuid))) class ServiceIds(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListServiceIds(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListServiceIds(grpc_context_id(context_uuid))) class Services(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListServices(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListServices(grpc_context_id(context_uuid))) def post(self, context_uuid : str): json_requests = request.get_json() if 'services' in json_requests: json_requests = json_requests['services'] for service in json_requests: if context_uuid != service['service_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') return [ format_grpc_to_json(self.service_client.CreateService(grpc_service(**service))) for service in json_requests ] class Service(_Resource): def get(self, context_uuid : str, service_uuid : str): return format_grpc_to_json(self.client.GetService(grpc_service_id(context_uuid, service_uuid))) def post(self, context_uuid : str, service_uuid : str): # pylint: disable=unused-argument service = request.get_json()['services'][0] return format_grpc_to_json(self.service_client.CreateService(grpc_service( service_uuid = service['service_id']['service_uuid']['uuid'], service_type = service['service_type'], context_uuid = service['service_id']['context_id']['context_uuid']['uuid'], ))) def put(self, context_uuid : str, service_uuid : str): # pylint: disable=unused-argument service = request.get_json()['services'][0] return format_grpc_to_json(self.service_client.UpdateService(grpc_service( service_uuid = service['service_id']['service_uuid']['uuid'], service_type = service['service_type'], context_uuid = service['service_id']['context_id']['context_uuid']['uuid'], status = service['service_status']['service_status'], endpoint_ids = service['service_endpoint_ids'], constraints = service['service_constraints'], config_rules = service['service_config']['config_rules'] ))) return format_grpc_to_json(self.context_client.GetService(grpc_service_id(context_uuid, service_uuid))) def put(self, context_uuid : str, service_uuid : str): service = request.get_json() if context_uuid != service['service_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') if service_uuid != service['service_id']['service_uuid']['uuid']: raise BadRequest('Mismatching service_uuid') return format_grpc_to_json(self.service_client.UpdateService(grpc_service(service))) def delete(self, context_uuid : str, service_uuid : str): return format_grpc_to_json(self.service_client.DeleteService(grpc_service_id( context_uuid, service_uuid, ))) return format_grpc_to_json(self.service_client.DeleteService(grpc_service_id(context_uuid, service_uuid))) class SliceIds(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListSliceIds(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListSliceIds(grpc_context_id(context_uuid))) class Slices(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListSlices(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListSlices(grpc_context_id(context_uuid))) def post(self, context_uuid : str): json_requests = request.get_json() if 'slices' in json_requests: json_requests = json_requests['slices'] for slice_ in json_requests: if context_uuid != slice_['slice_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') return [ format_grpc_to_json(self.slice_client.CreateSlice(grpc_slice(**slice_))) for slice_ in json_requests ] class Slice(_Resource): def get(self, context_uuid : str, slice_uuid : str): return format_grpc_to_json(self.client.GetSlice(grpc_slice_id(context_uuid, slice_uuid))) return format_grpc_to_json(self.context_client.GetSlice(grpc_slice_id(context_uuid, slice_uuid))) def put(self, context_uuid : str, slice_uuid : str): slice_ = request.get_json() if context_uuid != slice_['slice_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') if slice_uuid != slice_['slice_id']['slice_uuid']['uuid']: raise BadRequest('Mismatching slice_uuid') return format_grpc_to_json(self.slice_client.UpdateSlice(grpc_slice(slice_))) def delete(self, context_uuid : str, slice_uuid : str): return format_grpc_to_json(self.slice_client.DeleteSlice(grpc_slice_id(context_uuid, slice_uuid))) class DeviceIds(_Resource): def get(self): return format_grpc_to_json(self.client.ListDeviceIds(Empty())) return format_grpc_to_json(self.context_client.ListDeviceIds(Empty())) class Devices(_Resource): def get(self): return format_grpc_to_json(self.client.ListDevices(Empty())) return format_grpc_to_json(self.context_client.ListDevices(Empty())) def post(self): json_requests = request.get_json() if 'devices' in json_requests: json_requests = json_requests['devices'] return [ format_grpc_to_json(self.device_client.AddDevice(grpc_device(device))) for device in json_requests ] class Device(_Resource): def get(self, device_uuid : str): return format_grpc_to_json(self.client.GetDevice(grpc_device_id(device_uuid))) return format_grpc_to_json(self.context_client.GetDevice(grpc_device_id(device_uuid))) def put(self, device_uuid : str): device = request.get_json() if device_uuid != device['device_id']['device_uuid']['uuid']: raise BadRequest('Mismatching device_uuid') return format_grpc_to_json(self.device_client.ConfigureDevice(grpc_device(device))) def delete(self, device_uuid : str): return format_grpc_to_json(self.device_client.DeleteDevice(grpc_device_id(device_uuid))) class LinkIds(_Resource): def get(self): return format_grpc_to_json(self.client.ListLinkIds(Empty())) return format_grpc_to_json(self.context_client.ListLinkIds(Empty())) class Links(_Resource): def get(self): return format_grpc_to_json(self.client.ListLinks(Empty())) return format_grpc_to_json(self.context_client.ListLinks(Empty())) def post(self): json_requests = request.get_json() if 'links' in json_requests: json_requests = json_requests['links'] return [ format_grpc_to_json(self.context_client.SetLink(grpc_link(link))) for link in json_requests ] class Link(_Resource): def get(self, link_uuid : str): return format_grpc_to_json(self.client.GetLink(grpc_link_id(link_uuid))) return format_grpc_to_json(self.context_client.GetLink(grpc_link_id(link_uuid))) def put(self, link_uuid : str): link = request.get_json() if link_uuid != link['link_id']['link_uuid']['uuid']: raise BadRequest('Mismatching link_uuid') return format_grpc_to_json(self.context_client.SetLink(grpc_link(link))) def delete(self, link_uuid : str): return format_grpc_to_json(self.context_client.RemoveLink(grpc_link_id(link_uuid))) class ConnectionIds(_Resource): def get(self, context_uuid : str, service_uuid : str): return format_grpc_to_json(self.client.ListConnectionIds(grpc_service_id(context_uuid, service_uuid))) return format_grpc_to_json(self.context_client.ListConnectionIds(grpc_service_id(context_uuid, service_uuid))) class Connections(_Resource): def get(self, context_uuid : str, service_uuid : str): return format_grpc_to_json(self.client.ListConnections(grpc_service_id(context_uuid, service_uuid))) return format_grpc_to_json(self.context_client.ListConnections(grpc_service_id(context_uuid, service_uuid))) class Connection(_Resource): def get(self, connection_uuid : str): return format_grpc_to_json(self.client.GetConnection(grpc_connection_id(connection_uuid))) return format_grpc_to_json(self.context_client.GetConnection(grpc_connection_id(connection_uuid))) class PolicyRuleIds(_Resource): def get(self): return format_grpc_to_json(self.client.ListPolicyRuleIds(Empty())) return format_grpc_to_json(self.context_client.ListPolicyRuleIds(Empty())) class PolicyRules(_Resource): def get(self): return format_grpc_to_json(self.client.ListPolicyRules(Empty())) return format_grpc_to_json(self.context_client.ListPolicyRules(Empty())) class PolicyRule(_Resource): def get(self, policy_rule_uuid : str): return format_grpc_to_json(self.client.GetPolicyRule(grpc_policy_rule_id(policy_rule_uuid))) return format_grpc_to_json(self.context_client.GetPolicyRule(grpc_policy_rule_id(policy_rule_uuid))) src/nbi/service/rest_server/nbi_plugins/tfs_api/Tools.py +26 −37 Original line number Diff line number Diff line Loading @@ -12,21 +12,20 @@ # See the License for the specific language governing permissions and # limitations under the License. from typing import Dict from flask.json import jsonify from common.proto.context_pb2 import ( ConnectionId, ContextId, DeviceId, LinkId, ServiceId, SliceId, TopologyId, Service, ServiceStatusEnum ConnectionId, Context, ContextId, Device, DeviceId, Link, LinkId, ServiceId, Slice, SliceId, Topology, TopologyId, Service ) from common.proto.policy_pb2 import PolicyRuleId from common.proto.policy_pb2 import PolicyRule, PolicyRuleId from common.tools.grpc.Tools import grpc_message_to_json from common.tools.object_factory.Connection import json_connection_id from common.tools.object_factory.Context import json_context_id from common.tools.object_factory.ConfigRule import json_config_rule from common.tools.object_factory.Constraint import json_constraint_custom from common.tools.object_factory.EndPoint import json_endpoint_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.PolicyRule import json_policyrule_id from common.tools.object_factory.Service import json_service_id, json_service from common.tools.object_factory.Service import json_service_id from common.tools.object_factory.Slice import json_slice_id from common.tools.object_factory.Topology import json_topology_id Loading @@ -40,51 +39,41 @@ def grpc_connection_id(connection_uuid): def grpc_context_id(context_uuid): return ContextId(**json_context_id(context_uuid)) def grpc_context(json_context : Dict): return Context(**json_context) def grpc_device_id(device_uuid): return DeviceId(**json_device_id(device_uuid)) def grpc_device(json_device : Dict): return Device(**json_device) def grpc_link_id(link_uuid): return LinkId(**json_link_id(link_uuid)) def grpc_link(json_link : Dict): return Link(**json_link) def grpc_service_id(context_uuid, service_uuid): return ServiceId(**json_service_id(service_uuid, context_id=json_context_id(context_uuid))) def grpc_service( service_uuid, service_type, context_uuid, status=None, endpoint_ids=None, constraints=None, config_rules=None ): json_context = json_context_id(context_uuid) json_status = status if status else ServiceStatusEnum.SERVICESTATUS_PLANNED json_endpoints_ids = [ json_endpoint_id( json_device_id(endpoint_id['device_id']['device_uuid']['uuid']), endpoint_id['endpoint_uuid']['uuid'] ) for endpoint_id in endpoint_ids ] if endpoint_ids else [] json_constraints = [ json_constraint_custom( constraint['custom']['constraint_type'], constraint['custom']['constraint_value'] ) for constraint in constraints ] if constraints else [] json_config_rules = [ json_config_rule( config_rule['action'], config_rule['custom']['resource_key'], config_rule['custom']['resource_value'] ) for config_rule in config_rules ] if config_rules else [] return Service(**json_service( service_uuid, service_type, json_context, json_status, json_endpoints_ids, json_constraints, json_config_rules)) def grpc_service(json_service : Dict): return Service(**json_service) def grpc_slice_id(context_uuid, slice_uuid): return SliceId(**json_slice_id(slice_uuid, context_id=json_context_id(context_uuid))) def grpc_slice(json_slice : Dict): return Slice(**json_slice) def grpc_topology_id(context_uuid, topology_uuid): return TopologyId(**json_topology_id(topology_uuid, context_id=json_context_id(context_uuid))) def grpc_topology(json_topology : Dict): return Topology(**json_topology) def grpc_policy_rule_id(policy_rule_uuid): return PolicyRuleId(**json_policyrule_id(policy_rule_uuid)) def grpc_policy_rule(json_policy_rule : Dict): return PolicyRule(**json_policy_rule) Loading
src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py +174 −60 Original line number Diff line number Diff line Loading @@ -15,33 +15,71 @@ import json from flask.json import jsonify from flask_restful import Resource, request from werkzeug.exceptions import BadRequest from common.proto.context_pb2 import Empty from common.tools.grpc.Tools import grpc_message_to_json from context.client.ContextClient import ContextClient from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from slice.client.SliceClient import SliceClient from .Tools import ( format_grpc_to_json, grpc_connection_id, grpc_context_id, grpc_device_id, grpc_link_id, grpc_policy_rule_id, grpc_service_id, grpc_service, grpc_slice_id, grpc_topology_id) format_grpc_to_json, grpc_connection_id, grpc_context, grpc_context_id, grpc_device, grpc_device_id, grpc_link, grpc_link_id, grpc_policy_rule_id, grpc_service_id, grpc_service, grpc_slice, grpc_slice_id, grpc_topology, grpc_topology_id ) class _Resource(Resource): def __init__(self) -> None: super().__init__() self.client = ContextClient() self.context_client = ContextClient() self.device_client = DeviceClient() self.service_client = ServiceClient() self.slice_client = SliceClient() class ContextIds(_Resource): def get(self): return format_grpc_to_json(self.client.ListContextIds(Empty())) return format_grpc_to_json(self.context_client.ListContextIds(Empty())) class Contexts(_Resource): def get(self): return format_grpc_to_json(self.client.ListContexts(Empty())) return format_grpc_to_json(self.context_client.ListContexts(Empty())) def post(self): json_requests = request.get_json() if 'contexts' in json_requests: json_requests = json_requests['contexts'] return [ format_grpc_to_json(self.context_client.SetContext(grpc_context(context))) for context in json_requests ] class Context(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.context_client.GetContext(grpc_context_id(context_uuid))) def put(self, context_uuid : str): context = request.get_json() if context_uuid != context['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') return format_grpc_to_json(self.context_client.SetContext(grpc_context(context))) def delete(self, context_uuid : str): return format_grpc_to_json(self.context_client.RemoveContext(grpc_context_id(context_uuid))) class DummyContexts(_Resource): def get(self): contexts = grpc_message_to_json(self.client.ListContexts(Empty()), use_integers_for_enums=True)['contexts'] devices = grpc_message_to_json(self.client.ListDevices(Empty()), use_integers_for_enums=True)['devices'] links = grpc_message_to_json(self.client.ListLinks(Empty()), use_integers_for_enums=True)['links'] contexts = grpc_message_to_json( self.context_client.ListContexts(Empty()), use_integers_for_enums=True )['contexts'] devices = grpc_message_to_json( self.context_client.ListDevices(Empty()), use_integers_for_enums=True )['devices'] links = grpc_message_to_json( self.context_client.ListLinks(Empty()), use_integers_for_enums=True )['links'] topologies = list() slices = list() Loading @@ -53,17 +91,17 @@ class DummyContexts(_Resource): context_id = grpc_context_id(context_uuid) topologies.extend(grpc_message_to_json( self.client.ListTopologies(context_id), self.context_client.ListTopologies(context_id), use_integers_for_enums=True )['topologies']) slices.extend(grpc_message_to_json( self.client.ListSlices(context_id), self.context_client.ListSlices(context_id), use_integers_for_enums=True )['slices']) context_services = grpc_message_to_json( self.client.ListServices(context_id), self.context_client.ListServices(context_id), use_integers_for_enums=True )['services'] services.extend(context_services) Loading @@ -72,7 +110,7 @@ class DummyContexts(_Resource): service_uuid = service['service_id']['service_uuid']['uuid'] service_id = grpc_service_id(context_uuid, service_uuid) connections.extend(grpc_message_to_json( self.client.ListConnections(service_id), self.context_client.ListConnections(service_id), use_integers_for_enums=True )['connections']) Loading @@ -97,115 +135,191 @@ class DummyContexts(_Resource): if len(connections) > 0: dummy_context['connections'] = connections return jsonify(dummy_context) class Context(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.GetContext(grpc_context_id(context_uuid))) class TopologyIds(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListTopologyIds(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListTopologyIds(grpc_context_id(context_uuid))) class Topologies(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListTopologies(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListTopologies(grpc_context_id(context_uuid))) def post(self, context_uuid : str): json_requests = request.get_json() if 'topologies' in json_requests: json_requests = json_requests['topologies'] for topology in json_requests: if context_uuid != topology['topology_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') return [ format_grpc_to_json(self.context_client.SetTopology(grpc_topology(**topology))) for topology in json_requests ] class Topology(_Resource): def get(self, context_uuid : str, topology_uuid : str): return format_grpc_to_json(self.client.GetTopology(grpc_topology_id(context_uuid, topology_uuid))) return format_grpc_to_json(self.context_client.GetTopology(grpc_topology_id(context_uuid, topology_uuid))) def put(self, context_uuid : str, topology_uuid : str): topology = request.get_json() if context_uuid != topology['topology_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') if topology_uuid != topology['topology_id']['topology_uuid']['uuid']: raise BadRequest('Mismatching topology_uuid') return format_grpc_to_json(self.context_client.SetTopology(grpc_topology(topology))) def delete(self, context_uuid : str, topology_uuid : str): return format_grpc_to_json(self.context_client.RemoveTopology(grpc_topology_id(context_uuid, topology_uuid))) class ServiceIds(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListServiceIds(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListServiceIds(grpc_context_id(context_uuid))) class Services(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListServices(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListServices(grpc_context_id(context_uuid))) def post(self, context_uuid : str): json_requests = request.get_json() if 'services' in json_requests: json_requests = json_requests['services'] for service in json_requests: if context_uuid != service['service_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') return [ format_grpc_to_json(self.service_client.CreateService(grpc_service(**service))) for service in json_requests ] class Service(_Resource): def get(self, context_uuid : str, service_uuid : str): return format_grpc_to_json(self.client.GetService(grpc_service_id(context_uuid, service_uuid))) def post(self, context_uuid : str, service_uuid : str): # pylint: disable=unused-argument service = request.get_json()['services'][0] return format_grpc_to_json(self.service_client.CreateService(grpc_service( service_uuid = service['service_id']['service_uuid']['uuid'], service_type = service['service_type'], context_uuid = service['service_id']['context_id']['context_uuid']['uuid'], ))) def put(self, context_uuid : str, service_uuid : str): # pylint: disable=unused-argument service = request.get_json()['services'][0] return format_grpc_to_json(self.service_client.UpdateService(grpc_service( service_uuid = service['service_id']['service_uuid']['uuid'], service_type = service['service_type'], context_uuid = service['service_id']['context_id']['context_uuid']['uuid'], status = service['service_status']['service_status'], endpoint_ids = service['service_endpoint_ids'], constraints = service['service_constraints'], config_rules = service['service_config']['config_rules'] ))) return format_grpc_to_json(self.context_client.GetService(grpc_service_id(context_uuid, service_uuid))) def put(self, context_uuid : str, service_uuid : str): service = request.get_json() if context_uuid != service['service_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') if service_uuid != service['service_id']['service_uuid']['uuid']: raise BadRequest('Mismatching service_uuid') return format_grpc_to_json(self.service_client.UpdateService(grpc_service(service))) def delete(self, context_uuid : str, service_uuid : str): return format_grpc_to_json(self.service_client.DeleteService(grpc_service_id( context_uuid, service_uuid, ))) return format_grpc_to_json(self.service_client.DeleteService(grpc_service_id(context_uuid, service_uuid))) class SliceIds(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListSliceIds(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListSliceIds(grpc_context_id(context_uuid))) class Slices(_Resource): def get(self, context_uuid : str): return format_grpc_to_json(self.client.ListSlices(grpc_context_id(context_uuid))) return format_grpc_to_json(self.context_client.ListSlices(grpc_context_id(context_uuid))) def post(self, context_uuid : str): json_requests = request.get_json() if 'slices' in json_requests: json_requests = json_requests['slices'] for slice_ in json_requests: if context_uuid != slice_['slice_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') return [ format_grpc_to_json(self.slice_client.CreateSlice(grpc_slice(**slice_))) for slice_ in json_requests ] class Slice(_Resource): def get(self, context_uuid : str, slice_uuid : str): return format_grpc_to_json(self.client.GetSlice(grpc_slice_id(context_uuid, slice_uuid))) return format_grpc_to_json(self.context_client.GetSlice(grpc_slice_id(context_uuid, slice_uuid))) def put(self, context_uuid : str, slice_uuid : str): slice_ = request.get_json() if context_uuid != slice_['slice_id']['context_id']['context_uuid']['uuid']: raise BadRequest('Mismatching context_uuid') if slice_uuid != slice_['slice_id']['slice_uuid']['uuid']: raise BadRequest('Mismatching slice_uuid') return format_grpc_to_json(self.slice_client.UpdateSlice(grpc_slice(slice_))) def delete(self, context_uuid : str, slice_uuid : str): return format_grpc_to_json(self.slice_client.DeleteSlice(grpc_slice_id(context_uuid, slice_uuid))) class DeviceIds(_Resource): def get(self): return format_grpc_to_json(self.client.ListDeviceIds(Empty())) return format_grpc_to_json(self.context_client.ListDeviceIds(Empty())) class Devices(_Resource): def get(self): return format_grpc_to_json(self.client.ListDevices(Empty())) return format_grpc_to_json(self.context_client.ListDevices(Empty())) def post(self): json_requests = request.get_json() if 'devices' in json_requests: json_requests = json_requests['devices'] return [ format_grpc_to_json(self.device_client.AddDevice(grpc_device(device))) for device in json_requests ] class Device(_Resource): def get(self, device_uuid : str): return format_grpc_to_json(self.client.GetDevice(grpc_device_id(device_uuid))) return format_grpc_to_json(self.context_client.GetDevice(grpc_device_id(device_uuid))) def put(self, device_uuid : str): device = request.get_json() if device_uuid != device['device_id']['device_uuid']['uuid']: raise BadRequest('Mismatching device_uuid') return format_grpc_to_json(self.device_client.ConfigureDevice(grpc_device(device))) def delete(self, device_uuid : str): return format_grpc_to_json(self.device_client.DeleteDevice(grpc_device_id(device_uuid))) class LinkIds(_Resource): def get(self): return format_grpc_to_json(self.client.ListLinkIds(Empty())) return format_grpc_to_json(self.context_client.ListLinkIds(Empty())) class Links(_Resource): def get(self): return format_grpc_to_json(self.client.ListLinks(Empty())) return format_grpc_to_json(self.context_client.ListLinks(Empty())) def post(self): json_requests = request.get_json() if 'links' in json_requests: json_requests = json_requests['links'] return [ format_grpc_to_json(self.context_client.SetLink(grpc_link(link))) for link in json_requests ] class Link(_Resource): def get(self, link_uuid : str): return format_grpc_to_json(self.client.GetLink(grpc_link_id(link_uuid))) return format_grpc_to_json(self.context_client.GetLink(grpc_link_id(link_uuid))) def put(self, link_uuid : str): link = request.get_json() if link_uuid != link['link_id']['link_uuid']['uuid']: raise BadRequest('Mismatching link_uuid') return format_grpc_to_json(self.context_client.SetLink(grpc_link(link))) def delete(self, link_uuid : str): return format_grpc_to_json(self.context_client.RemoveLink(grpc_link_id(link_uuid))) class ConnectionIds(_Resource): def get(self, context_uuid : str, service_uuid : str): return format_grpc_to_json(self.client.ListConnectionIds(grpc_service_id(context_uuid, service_uuid))) return format_grpc_to_json(self.context_client.ListConnectionIds(grpc_service_id(context_uuid, service_uuid))) class Connections(_Resource): def get(self, context_uuid : str, service_uuid : str): return format_grpc_to_json(self.client.ListConnections(grpc_service_id(context_uuid, service_uuid))) return format_grpc_to_json(self.context_client.ListConnections(grpc_service_id(context_uuid, service_uuid))) class Connection(_Resource): def get(self, connection_uuid : str): return format_grpc_to_json(self.client.GetConnection(grpc_connection_id(connection_uuid))) return format_grpc_to_json(self.context_client.GetConnection(grpc_connection_id(connection_uuid))) class PolicyRuleIds(_Resource): def get(self): return format_grpc_to_json(self.client.ListPolicyRuleIds(Empty())) return format_grpc_to_json(self.context_client.ListPolicyRuleIds(Empty())) class PolicyRules(_Resource): def get(self): return format_grpc_to_json(self.client.ListPolicyRules(Empty())) return format_grpc_to_json(self.context_client.ListPolicyRules(Empty())) class PolicyRule(_Resource): def get(self, policy_rule_uuid : str): return format_grpc_to_json(self.client.GetPolicyRule(grpc_policy_rule_id(policy_rule_uuid))) return format_grpc_to_json(self.context_client.GetPolicyRule(grpc_policy_rule_id(policy_rule_uuid)))
src/nbi/service/rest_server/nbi_plugins/tfs_api/Tools.py +26 −37 Original line number Diff line number Diff line Loading @@ -12,21 +12,20 @@ # See the License for the specific language governing permissions and # limitations under the License. from typing import Dict from flask.json import jsonify from common.proto.context_pb2 import ( ConnectionId, ContextId, DeviceId, LinkId, ServiceId, SliceId, TopologyId, Service, ServiceStatusEnum ConnectionId, Context, ContextId, Device, DeviceId, Link, LinkId, ServiceId, Slice, SliceId, Topology, TopologyId, Service ) from common.proto.policy_pb2 import PolicyRuleId from common.proto.policy_pb2 import PolicyRule, PolicyRuleId from common.tools.grpc.Tools import grpc_message_to_json from common.tools.object_factory.Connection import json_connection_id from common.tools.object_factory.Context import json_context_id from common.tools.object_factory.ConfigRule import json_config_rule from common.tools.object_factory.Constraint import json_constraint_custom from common.tools.object_factory.EndPoint import json_endpoint_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.PolicyRule import json_policyrule_id from common.tools.object_factory.Service import json_service_id, json_service from common.tools.object_factory.Service import json_service_id from common.tools.object_factory.Slice import json_slice_id from common.tools.object_factory.Topology import json_topology_id Loading @@ -40,51 +39,41 @@ def grpc_connection_id(connection_uuid): def grpc_context_id(context_uuid): return ContextId(**json_context_id(context_uuid)) def grpc_context(json_context : Dict): return Context(**json_context) def grpc_device_id(device_uuid): return DeviceId(**json_device_id(device_uuid)) def grpc_device(json_device : Dict): return Device(**json_device) def grpc_link_id(link_uuid): return LinkId(**json_link_id(link_uuid)) def grpc_link(json_link : Dict): return Link(**json_link) def grpc_service_id(context_uuid, service_uuid): return ServiceId(**json_service_id(service_uuid, context_id=json_context_id(context_uuid))) def grpc_service( service_uuid, service_type, context_uuid, status=None, endpoint_ids=None, constraints=None, config_rules=None ): json_context = json_context_id(context_uuid) json_status = status if status else ServiceStatusEnum.SERVICESTATUS_PLANNED json_endpoints_ids = [ json_endpoint_id( json_device_id(endpoint_id['device_id']['device_uuid']['uuid']), endpoint_id['endpoint_uuid']['uuid'] ) for endpoint_id in endpoint_ids ] if endpoint_ids else [] json_constraints = [ json_constraint_custom( constraint['custom']['constraint_type'], constraint['custom']['constraint_value'] ) for constraint in constraints ] if constraints else [] json_config_rules = [ json_config_rule( config_rule['action'], config_rule['custom']['resource_key'], config_rule['custom']['resource_value'] ) for config_rule in config_rules ] if config_rules else [] return Service(**json_service( service_uuid, service_type, json_context, json_status, json_endpoints_ids, json_constraints, json_config_rules)) def grpc_service(json_service : Dict): return Service(**json_service) def grpc_slice_id(context_uuid, slice_uuid): return SliceId(**json_slice_id(slice_uuid, context_id=json_context_id(context_uuid))) def grpc_slice(json_slice : Dict): return Slice(**json_slice) def grpc_topology_id(context_uuid, topology_uuid): return TopologyId(**json_topology_id(topology_uuid, context_id=json_context_id(context_uuid))) def grpc_topology(json_topology : Dict): return Topology(**json_topology) def grpc_policy_rule_id(policy_rule_uuid): return PolicyRuleId(**json_policyrule_id(policy_rule_uuid)) def grpc_policy_rule(json_policy_rule : Dict): return PolicyRule(**json_policy_rule)