Skip to content

VIM Adaptor API Reference

Frédéric edited this page Apr 16, 2018 · 13 revisions

VIM Adaptor API Reference

Add Compute VIM

Register a Compute VIM to the VIM-Adaptor.

  • 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 }
  • 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 VIM-Adaptor, 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 } }, 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, along with basic information on the resource totally available and consumed in this VIM.

  • topic: infrastructure.management.compute.list
  • data: null
  • return: {[{vim_uuid: String, vim_city{ service_instance_id: String, nsd: SonataNSDescriptor, vnfds: [{ SonataVNFDescriptor }], vnfrs: [{ SonataVNFRecord }], ingresses: [{ location:String, nap:x.x.x.x/y }], egresses: [{ location:String, nap:x.x.x.x/y }] }: String, vim_name: String, vim_endpoint: String, memory_total: int, memory_used: int, core_total: int, core_used: int}]}

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

Remove VIM

Remove a VIM from the the VIM-Adaptor, being it a Network VIM or a Compute VIM. If a compute VIM is removed, also the Network VIM attached to it will be removed.

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

Prepare NFVI for service deployment

Prepare a list of NFVI-PoP for the deployment of a NS instance. This includes pre-deploying VNF images in the relevant image repository (e.g. Glance or Docker image repository) and creating network facilities to which VNFs will be attached.

  • topic: infrastructure.service.prepare
  • data: {instance_id: String, vim_list: [{uuid: String, vm_images: [{image_uuid: String, image_url: 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 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, vnfr: SonataVNFRecord }

Scale a VNF instance for a Service

Scaling a VNF given the VNF instance ID and a list VDUs and the updated number of instances per VDU. This call returns an incomplete VNF Record containing the updated fields that are generated at the infrastructural level.

  • topic: infrastructure.function.scale
  • data: {vnf_instance_id: String, vdus: [{ vdu_id: String, updated_instances_number: String }]}
  • return: {request_status: String, message: String, vnfr: SonataVNFRecord} when request_status is "COMPLETED", message field is empty, when request_status is "ERROR", message field carries a string with the error message.

NOTE: This functionality is still under development.

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 }], 
 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 all NFVI-PoP involved in the deployment of a specific network service instance.

  • topic: infrastructure.chain.deconfigure
  • data: {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.

Remove Service instance

Remove all the VNFs instances of a given Network Service instance from the whole NFVI.

  • topic: infrastructure.service.remove
  • data: {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.