Skip to content

RabbitMQ API Reference

Carlos Marques edited this page Aug 26, 2019 · 18 revisions

Northbound API

The Infrastructure Abstraction is reachable on the follow topics on the Service Platform message broker:

Add Compute VIM

Register a Compute VIM to the IA.

  • topic: infrastructure.management.compute.add
  • data: { vim_type: String, configuration: { tenant_ext_router: String, tenant_ext_net: String, tenant: String }, city: String, country: String, vim_address: String, username: String, pass: String, domain: String, name: String }
  • return: {request_status: String, uuid: String, message: String} when request_status is "COMPLETED", uuid field carries the UUID of the registered VIM and message field is null, when request_status is "ERROR", message field carries a string with the error message, and the uuid field is empty.

Add Network VIM

Register a Network VIM to the IA, also specifying the Compute VIM to which it is attached.

  • topic: infrastructure.management.network.add
  • data: { vim_type: String, vim_address: String, username: String, city: String, country: String, pass: String, configuration: { compute_uuid: String }, domain: String, name: String }, compute_uuid must contain the UUID of a compute VIM already registered to the platform.
  • return: {request_status: String, uuid: String, message: String}, when request_status is "COMPLETED", uuid fields carries the UUID of the registered VIM and message field is null, when request_status is "ERROR", message field carries a string with the error message, and the uuid field is empty.

List Compute VIM

Return a list of the registered compute VIMs and NEPs, along with basic information on the resource totally available and consumed in this VIM.

  • topic: infrastructure.management.compute.list
  • data: null
  • return: {vim_list: [{vim_uuid: String, type: String, vim_city: String, vim_domain: String, vim_name: String, vim_endpoint: String, memory_total: int, memory_used: int, core_total: int, core_used: int}], nep_list: [{nep_uuid: String, type: String, nep_name: String}]}, when exist an error, request_status is "ERROR", message field carries a string with the error message and the other fields are empty. Field 'type' can be "vm" or "container".

List Network VIM

Return a list of the registered Network VIMs.

  • topic: infrastructure.management.network.list
  • data: null
  • return: {[ { vim_uuid: String, vim_city: String, vim_name: String, vim_endpoint: String } ]}, when exist an error, request_status is "ERROR" or "fail", message field carries a string with the error message and the other fields are empty.

Remove VIM

Remove a VIM from the the IA, being it a Network VIM or a Compute VIM.

  • topic: infrastructure.management.{network,compute}.remove
  • data: {uuid:String}
  • return: {request_status: String, message: String}, when request_status is "COMPLETED", message field is empty, when request_status is "ERROR", message field carries a string with the error message.

Create networks for service deployment

Create networks in NFVI-PoPs of a Network Service/Slice instance. This message is also used to prepare a list of NFVI-PoP for the deployment of a NS instance (creating network facilities to which VNFs will be attached).

  • topic: infrastructure.service.network.create
  • data: {instance_id: String, vim_list: [{uuid: String, virtual_links: [{id: String, access: String, dhcp: String, cidr: String, qos: String, qos_requirements: {bandwidth_limit: {bandwidth: int, bandwidth_unit: String}, minimum_bandwidth: {bandwidth: int, bandwidth_unit: String} } } }] }] }
  • return: {request_status: String, message: String}, when request_status is "COMPLETED", message field is empty, when request_status is "ERROR", message field carries a string with the error message.

Delete networks for service deployment

Delete networks in NFVI-PoPs of a Network Service/Slice instance, after the preparation was done (needs a network.create message first).

  • topic: infrastructure.service.network.delete
  • data: {instance_id: String, vim_list: [{uuid: String, virtual_links: [{id: String}] }] }
  • return: {request_status: String, message: String}, when request_status is "COMPLETED", message field is empty, when request_status is "ERROR", message field carries a string with the error message.

Deploy a VNF instance for a Service

Deploy a VNF given the relevant VNFD, the UUID of the compute VIM in which the VNF must be deployed and the service instance ID of the relevant network service instance. This includes deploying VNF images in the relevant image repository (e.g. Glance or Docker image repository). This call returns an incomplete VNF Record containing the field that are generated at the infrastructural level, such as VNFC number and identifiers, IP and MAC addresses, etc.

  • topic: infrastructure.function.deploy
  • data: {vim_uuid: String, service_instance_id: String, vnfd: SonataVnfDescriptor}
  • return: { instanceName: String, instanceVimUuid: String, vimUuid: String, request_status: String, ip_mapping: [{ SonataIpMapping }], vnfr: SonataVnfRecord, message: String }, when request_status is "COMPLETED", message field is empty, when request_status is "ERROR", message field carries a string with the error message and the other fields are empty.

Configure a VNF instance for a Service

Configure a VNF given the UUID of the compute VIM, the service instance ID and the specific fields for configure. (e.g. for k8s vim wrapper, the fields for configuration are: cdu_id, envs and func_id)

  • topic: infrastructure.function.configure
  • data: {vim_uuid: String, service_instance_id: String, ...}
  • return: {request_status: String, message: String}, when request_status is "COMPLETED", message field is empty, when request_status is "ERROR", message field carries a string with the error message.

Configure intra-PoP chaining

For each NFVI-PoP involved in the deployment of a network service, the function chaining between VNFs deployed in the same PoP is configured following the specification contained in the NS Forwarding graph and configured for the flows specified in the ingress_nap and egress_nap list, which is retrieved from the information specified by the SP user during the service instantiation request described in the D43_BSS_Module.

  • topic: infrastructure.service.chain.configure
  • data: {service_instance_id: String, nsd: SonataNSDescriptor, vnfds: [{ SonataVNFDescriptor }], vnfrs: [{ SonataVNFRecord }], nap: {ingresses: [{ location:String, nap:x.x.x.x/y }], egresses: [{ location:String, nap:x.x.x.x/y }] }}
  • return: {request_status: String, message: String}, when request_status is "COMPLETED", message field is empty, when request_status is "ERROR", message field carries a string with the error message.

Deconfigure intra-PoP chaining

Remove the SFC rules in the given Compute VIM related to the deployment of a specific network service instance.

  • topic: infrastructure.chain.deconfigure
  • data: {service_instance_id: String, vim_uuid: String}
  • return: {request_status: String, message: String}, when request_status is "COMPLETED" message field is empty, when request_status is "ERROR", message field carries a string with the error message.

Remove a VNF instance for a Service

Remove a specific VNF instance of a given Network Service instance from a given compute VIM.

  • topic: infrastructure.function.remove
  • data: {service_instance_id: String, vim_uuid: String, vnf_uuid: String}
  • return: {request_status: String, message: String}, when request_status is "COMPLETED" message field is empty, when request_status is "ERROR", message field carries a string with the error message.

Remove Service instance

Remove all the VNFs instances of a given Network Service instance from the given compute VIM.

  • topic: infrastructure.service.remove
  • data: {instance_uuid: String, vim_uuid: String}
  • return: {request_status: String, message: String}, when request_status is "COMPLETED" message field is empty, when request_status is "ERROR", message field carries a string with the error message.

Add a WIM

Register a WIM to the IA.

  • topic: infrastructure.management.wan.add
  • data: `{wim_vendor: String, wim_address: String, username: String, pass: String, name: String}``, allowed values for wim_vendor is "VTN" and "MOCK", when one wants a deployment without WAN configuration.
  • return: {request_status: String, uuid: String, message: String}, when request_status is "COMPLETED", uuid fields carries the UUID of the registered WIM and message field is null, when request_status is "ERROR", message field carries a string with the error message, and the uuid field is empty.

List WIMs

Retrieve a list of the WIMs registered to the IA.

  • topic: infrastructure.management.wan.list
  • data: null
  • return: {wim_list: [{uuid: String, name: String, attached_vims: [Strings], attached_endpoints: [Strings], qos: [{node_1: String, node_2: String, latency: int: latency_unit: String, bandwidth: int, bandwidth_unit: String}]}]}, when exist an error, request_status is "ERROR", message field carries a string with the error message and the other fields are empty.

Link VIM to WIM

Store in the WIM repository the connection information of a NFVI-PoP (i.e. Compute VIM) to a specific WIM.

  • topic: infrastructure.management.wan.attach
  • data: {wim_uuid: String, vim_uuid: String, vim_address: String}
  • return: {request_status: String, message: String}, when request_status is "COMPLETED", message field is empty, when request_status is "ERROR", message field carries a string with the error message.

Remove WIM

Remove a WIM from the the IA. This also remove the link VIM to WIM.

  • topic: infrastructure.management.wan.remove
  • data: {uuid:String}
  • return: {request_status: String, message: String}, when request_status is "COMPLETED", message field is empty, when request_status is "ERROR", message field carries a string with the error message.

Configure WAN for service instance

Configure the WAN to allow traffic flow defined by the pair (''ingress_nap'',''egress_nap'') to be steered through the NFVI-PoP where VNFs of the relevant service instance are deployed.

  • topic: infrastructure.service.wan.configure
  • data: {service_instance_id: String, wim_uuid: String, vl_id: String, ingress: {location: String, nap: String}, egress: {location: String, nap: String}, qos: {latency: int: latency_unit: String, bandwidth: int, bandwidth_unit: String}, bidirectional: bool }
  • return: {request_status: String, message: String}, when request_status is "COMPLETED", message field is empty, when request_status is "ERROR" or "fail" or "FAILED", message field carries a string with the error message.

Deconfigure WAN for service instance

Remove the WAN configuration associated with a Network Service instance for a given WIM.

  • topic: infrastructure.service.wan.deconfigure
  • data: {service_instance_id: String, wim_uuid: String, vl_id: String}
  • return: {request_status: String, message: String}, when request_status is "COMPLETED", message field is empty, when request_status is "ERROR" or "fail", message field carries a string with the error message.