..
 This work is licensed under a Creative Commons Attribution 4.0
 International License.

================================
MultiCloud API v1 Specification
================================

The is the specification for MultiCloud API version v1.

Note: "MultiCloud API Specification V1" refers to the specification for MultiCloud API version v0

API Catalog
===========

1. **Scope**
^^^^^^^^^^^^

The scope of the present document is to describe the MutliCloud NorthBound API
specification.

2. **Terms, Definitions and Abbreviations**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

For the purposes of the present document, the following abbreviations
apply:

===================== =========================================================
Abbreviation           Description
===================== =========================================================
NFVO                  Network Functions Virtualization Orchestrator
VNFM                  Virtual Network Function Management
VIM                   Virtualized Infrastructure Manager
MultiVIM/MultiCloud   MultVIM driver services for OPEN-O to drive VIM instances
===================== =========================================================

3. **Image Management**
^^^^^^^^^^^^^^^^^^^^^^^

3.1. **Create Image**
---------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/images
Operation              POST
Direction              NSLCM->MULTIVIM
Description            Create Image and Upload the image file to the VIM
===================== =========================================================

3.1.1. **Request**
>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
name             M         1            String     Image Name
imagePath        M         1            String     Image Local Path from catalog
imageType        M         1            String     Image Type
                                                     ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso
visibility       O         1            string     Visibility for this image.
                                                   public, private, shared, or community
containerFormat  M         1            string     ami,ari,aki,bare,ovf,ova, docker
properties       O         0..N         List       Examples:--property vmware_disktype=streamOptimized --property vmware_adaptertype="lsiLogic"
================ ========= ============ ======== ================================


::

    {

    "imageName": "cirros",

    "imagePath": "/home/cirros.qcow2",

    "imageType": "qcow2"

    "containerFormat":"bare"

    }

3.1.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  id                  M         1       String                      Image UUID in the VIM
  name                M         1       String                      Image Name
  returnCode          M         1       Int                         0: Already exist 1: Newly created
  imageType           M         1       String                      Image Type
                                                                      ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso
containerFormat       M         1       string                      ami,?ari,?aki,?bare,?ovf,?ova, ?docker
  visibility          O         1       string                      Visibility for this image.
                                                                      public, private, shared, or community
  properties          O                 0..N                List of key-value pairs
  vimid               M         1       String                      vim id
  vimName             O         1       string                      vim name
  cloud-owner         M         1       String                      cloud owner
cloud-region-id       M         1       string                      cloud region id
  tenantId            M         1       String                      Tenant UUID
================ ========= ============ ======== ================================

*202*: accepted

500: failed

::

    {
        "id": "3c9eebdbbfd345658269340b9ea6fb73",
        "name": "cirros",
        "returnCode": 1
    }

3.2. **Delete Image**
---------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/images/{imageId}
Operation              Delete
Direction              NSLCM->MULTIVIM
Description            Delete Image
===================== =========================================================

3.2.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

3.2.2. **Response**
>>>>>>>>>>>>>>>>>>>

204: no content

3.3. **List Images**
--------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/images
Operation              GET
Direction              NSLCM->MULTIVIM
Description            Query Image list
===================== =========================================================

3.3.1. **Request**
>>>>>>>>>>>>>>>>>>

============== ========= ============ ======== ================================
Parameter      Qualifier Cardinality  Content    Description
============== ========= ============ ======== ================================
  limit             O         1       integer         Requests a page size of items. Returns a number of items up to a limit value. Use the limit parameter to make an initial limited request and use the ID of the last-seen item from the response as the marker parameter value in a subsequent limited request.
  marker            O         1       string          The ID of the last-seen item. Use the limit parameter to make an initial limited request and use the ID of the last-seen item from the response as the marker parameter value in a subsequent limited request.
  name              O         1       String          Filters the response by a name, as a string. A valid value is the name of an image
============== ========= ============ ======== ================================


3.3.2. **Response**
>>>>>>>>>>>>>>>>>>>


================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
images            M         0..N         List      Image List

id                M         1            String    Image ID

size              M         1            int       Image Size

name              M         1            String    Image Name

status            M         1            String    Image Status

imageType         M         1            String    Image Type
                                                     ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso
containerFormat   M         1            string    ami,?ari,?aki,?bare,?ovf,?ova, ?docker
visibility        O         1            string    Visibility for this image.
                                                     public, private, shared, or community
vimId             M         1            String    vim id
vimName           O         1            string    vim name
cloud-owner       M         1            String    cloud owner
cloud-region-id   M         1            string    cloud region id
tenantId          M         1            String    Tenant UUID
================ ========= ============ ======== ================================

200: ok

500: failed

::

    {
        "vimid": "",
        "vimname": "",
        "imageList": [{
            "status": "active",
            "id": "5e2757c1-f846-4727-915c-9a872553ed75",
            "size": 862016,
            "name": "vim-plus-cgsl40g-z.qcow2"
        }]
    }


3.4. **Get Image**
------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/images/{imageid}
Operation              GET
Direction              NSLCM->MULTIVIM
Description            Query Image Information
===================== =========================================================



3.4.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

3.4.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  id                  M         1       String          Image ID
  size                M         1       int             Image Size
  name                M         1       String          Image Name
  status              M         1       String          Image Status
  imageType           M         1       String          Image Type
                                                          ami, ari, aki, vhd, vhdx, vmdk, raw, qcow2, vdi, iso
containerFormat       M         1       string          ami,?ari,?aki,?bare,?ovf,?ova, ?docker
  visibility          O         1       string          Visibility for this image.
                                                          public, private, shared, or community
  vimId               M         1       String          vim id
  vimName             M         1       string          vim name
  cloud-owner         M         1       String          cloud owner
cloud-region-id       M         1       string          cloud region id
  tenantId            M         1       String          Tenant UUID
================ ========= ============ ======== ================================

200: ok

500: failed

::

    {
        "vimid": "",
        "vimname": "",
        "status": "active",
        "id": "5e2757c1-f846-4727-915c-9a872553ed75",
        "size": 862016,
        "name": "vim-plus-cgsl40g-z.qcow2"
    }

4. **Network Management**
^^^^^^^^^^^^^^^^^^^^^^^^^

4.1. **Create Network**
-----------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/networks
Operation              POST
Direction              VNFLCM,NSLCM->MULTIVIM
Description            Create network on the VIM
===================== =========================================================

4.1.1. **Request**
>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  name                M         1       String          Logical network name
  shared              M         1       boolean         Whether to share(1:sharing;0:private)
vlanTransparent       O         1       boolean         Whether to support VLAN pass through(1:true;0:false)
  networkType         O         1       String          Network type
                                                          flat, vlan, vxlan, gre, portgroup
  segmentationId      O         1       Int             id of paragraph
physicalNetwork       O         1       string          The physical network where this network should be implemented. The Networking API v2.0 does not provide a way to list available physical networks. For example, the Open vSwitch plug-in configuration file defines a symbolic name that maps to specific bridges on each compute host.
  routerExternal      O         1       boolean        Indicates whether this network can provide floating IPs via a router.
================ ========= ============ ======== ================================


::

    {
        "tenant": "tenant1",
        "networkName": "ommnet",
        "shared": 1,
        "vlanTransparent": 1,
        "networkType": "vlan",
        "segmentationId": 202,
        "physicalNetwork": "ctrl",
        "routerExternal": 0
    }

4.1.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
status            M          1          string     Network status
id                M          1          string     Network id
name              M          1          string     Network name
tenantId          M          1          String     Tenant UUID
segmentationId    O          1          int        Segmentation id
networkType       O          1          string     Network type
physicalNetwork   O          1          string     The physical network where this network should be implemented. The Networking API v2.0 does not provide a way to list available physical networks. For example, the Open vSwitch plug-in configuration file defines a symbolic name that maps to specific bridges on each compute host.
vlanTransparent   O          1          boolean    Whether to support VLAN pass through(1:true;0:false)
shared            O          1          boolean    Whether to share(1:sharing;0:private)
routerExternal    O          1          boolean    Indicates whether this network can provide floating IPs via a router.
returnCode        M          1          int        0: Already exist 1: Newly created
vimId             M          1          String     vim id
vimName           O          1          string     vim name
cloud-owner       M          1          String     cloud owner
cloud-region-id   M          1          string     cloud region id
================ ========= ============ ======== ================================

202: accepted

500: failed

::

    {
        "returnCode": 0,
        "vimId": "11111",
        "vimName": "11111",
        "status": "ACTIVE",
        "id": "3c9eebdbbfd345658269340b9ea6fb73",
        "name": "net1",
        "tenant": "tenant1",
        "networkName": "ommnet",
        "shared": 1,
        "vlanTransparent": 1,
        "networkType": "vlan",
        "segmentationId": 202,
        "physicalNetwork": "ctrl",
        "routerExternal": 0
    }

4.2. **Delete Network**
-----------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/networks/{networkId}
Operation              Delete
Direction              VNFLCM,NSLCM->MULTIVIM
Description            Delete a network on the VIM
===================== =========================================================

4.2.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

4.2.2. **Response**
>>>>>>>>>>>>>>>>>>>

204: no content

4.3. **List Network**
---------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/networks
Operation              GET
Direction              VNFLCM,NSLCM->MULTIVIM
Description            List networks on the VIM
===================== =========================================================

4.3.1. **Query**
>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
name             O         1            String    Filters the response by a name, as a string. A valid value is the name of a network
================ ========= ============ ======== ================================

4.3.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
vimId             M           1         String        vim id
vimName           O           1         string        vim name
cloud-owner       M           1         String        cloud owner
cloud-region-id   M           1         string        cloud region id
networks                      0..N      List          Network list
status            M           1         string        Network status
id                M           1         string        Network id
name              M           1         string        Network name
tenantId          M           1         String        Tenant UUID
segmentationId    O           1         int           Segmentation id
networkType       O           1         string        Network type
physicalNetwork   O           1         string        The physical network where this network should be implemented. The Networking API v2.0 does not provide a way to list available physical networks. For example, the Open vSwitch plug-in configuration file defines a symbolic name that maps to specific bridges on each compute host.
vlanTransparent   O           1         boolean       Whether to support VLAN pass through(1:true;0:false)
shared            O           1         boolean       Whether to share(1:sharing;0:private)
routerExternal    O           1         boolean       Indicates whether this network can provide floating IPs via a router
================ ========= ============ ======== ================================

200: ok

500: failed

::

    {

        "vimId": "11111",

        "vimName": "111",

        "networks":

            [{

                "status": "ACTIVE",

                "id": "3c9eebdbbfd345658269340b9ea6fb73",

                "name": "net1",

                "tenant": "tenant1",

                "networkName": "ommnet",

                "shared": 1,

                "vlanTransparent": 1,

                "networkType": "vlan",

                "segmentationId": 202,

                "physicalNetwork ": "ctrl",

                "routerExternal ": 0

            }]

    }

4.4. **Get Network**
--------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/networks/{networkId}
Operation              get
Direction              VNFLCM,NSLCM->MULTIVIM
Description            Get a network on the VIM
===================== =========================================================

4.4.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

4.4.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  status              M         1       string          Network status
  id                  M         1       string          Network id
  name                M         1       string          Network name
  tenantId            M         1       String          Tenant UUID
  segmentationId      O         1       int             Segmentation id
  networkType         O         1       string          Network type
physicalNetwork       O         1       string          The physical network where this network should be implemented. The Networking API v2.0 does not provide a way to list available physical networks. For example, the Open vSwitch plug-in configuration file defines a symbolic name that maps to specific bridges on each compute host.
vlanTransparent       O         1       boolean         Whether to support VLAN pass through(1:true;0:false)
  shared              O         1       boolean         Whether to share(1:sharing;0:private)
  routerExternal      O         1       boolean         Indicates whether this network can provide floating IPs via a router.
  returnCode          M         1       int             0: Already exist 1: Newly created
  vimId               M         1       String          vim id
  vimName             O         1       string          vim name
  cloud-owner         M         1       String                      cloud owner
cloud-region-id       M         1       string                      cloud region id
================ ========= ============ ======== ================================

200: ok

500: failed

::

    {

        "vimId":"11111",

        "vimName":"11111",

        "status": "ACTIVE",

        "id": "3c9eebdbbfd345658269340b9ea6fb73",

        "name": "net1",

        "tenant": "tenant1",

        "networkName": "ommnet",

        "shared": 1,

        "vlanTransparent": 1,

        "networkType":"vlan",

        "segmentationId":202,

        "physicalNetwork ":"ctrl",

        "routerExternal ":0

    }

5. **Subnetwork Management**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

5.1. **Create Subnets**
-----------------------


===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/subnets
Operation              POST
Direction              VNFLCM,NSLCM->MULTIVIM
Description            Create subnet on the VIM
===================== =========================================================

5.1.1. **Request**
>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  networkId           M         1       String                   Network Id
  name                M         1       String                   SubnetName
  cidr                M         1       String                   Subnet cidr
  ipVersion           M         1       Int                      Ip type
                                                                    4,6
  enableDhcp          O         1       boolean                  Whether to allow
                                                                         1: yes;0: no
  gatewayIp           O         1       String                   Gateway ip
dnsNameservers        O         1..n    List        List of servers
  hostRoutes          O         1..n    List        List of routes
allocationPools       O         1..n    list        List of allocation
  -->allocation
  -->start            O         1       String                   Start ip
  -->end              O         1       String                   End ip
================ ========= ============ ======== ================================

::

    {

        "tenant": "tenant1",

        "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22",

        "subnetName": "subnet1",

        "cidr": "10.43.35.0/24",

        "ipVersion": 4,

        "enableDhcp": 1,

        "gatewayIp": "10.43.35.1",

        "dnsNameservers": [],

        "allocationPools": [{

            "start": "192.168.199.2",

            "end": "192.168.199.254"

        }],

        "hostRoutes": []

    }

5.1.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  returnCode          M         1       int                      0: Already exist 1: Newly created
  vimId               M         1       String                   vim id
  vimName             O         1       string                   vim name
  cloud-owner         M         1       String                      cloud owner
cloud-region-id       M         1       string                      cloud region id
  status              M         1       string                   subnetwork status
  id                  M         1       string                   subNetwork id
  tenantId            M         1       String                   Tenant UUID
  networkId           O         1       String                   Network Id
  networkName         O         1       String                   Network Name
  name                M         1       String                   SubnetName
  cidr                M         1       String                   Subnet cidr
  ipVersion           M         1       Int                      Ip type
                                                                  4,6
  enableDhcp          O         1       boolean                  Whether to allow
                                                                  1: yes;0: no
  gatewayIp           O         1       String                   Gateway ip
dnsNameservers        O         1..n    List          List of servers
  hostRoutes          O         1..     List           List of routes
allocationPools       O         1..n    List           list of allocation
  -->allocation
  -->start            O         1       String                   Start ip
  -->end              O         1       String                   End ip
================ ========= ============ ======== ================================

202: accepted

500: failed

::

    {

        "returnCode": 0,

        "vimId": "11111",

        "vimName": "11111",

        "status": " ACTIVE",

        "id": " d62019d3-bc6e-4319-9c1d-6722fc136a23",

        "tenant": "tenant1",

        "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22",

        "name": "subnet1",

        "cidr": "10.43.35.0/24",

        "ipVersion": 4,

        "enableDhcp": 1,

        "gatewayIp": "10.43.35.1",

        "dnsNameservers": [],

        "allocationPools": [{

            "start": "192.168.199.2",

            "end": "192.168.199.254"

        }],

        "hostRoutes": []

    }

5.2. **Delete Subnets**
-----------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/subnets/{subnetId}
Operation              Delete
Direction              VNFLCM,NSLCM->MULTIVIM
Description            Delete a subnet on the VIM
===================== =========================================================

5.2.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

5.2.2. **Response**
>>>>>>>>>>>>>>>>>>>

204: no content

5.3. **List Subnets**
---------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/subnets
Operation              Get
Direction              VNFLCM,NSLCM->MULTIVIM
Description            List subnets on the VIM
===================== =========================================================

5.3.1. **Query**
>>>>>>>>>>>>>>>>

msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/subnets?{……}

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  name              O         1         String          Filters fields of the response by a name, as a string. A valid value is the name of a subnet
================ ========= ============ ======== ================================

5.3.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  vimId               M         1       String                   vim id
  vimName             O         1       string                   vim name
  cloud-owner         M         1       String                      cloud owner
cloud-region-id       M         1       string                      cloud region id
  subnets             M         0..N    List                     Network list
  status                        1       string                   subnetwork status
  id                            1       string                   subNetwork id
  tenantId            M         1       String                   Tenant UUID
  networkId           O         1       String                   Network Id
  networkName         O         1       String                   Network Name
  name                M         1       String                   SubnetName
  cidr                M         1       String                   Subnet cidr
  ipVersion           M         1       Int                      Ip type
                                                                    4,6
  enableDhcp          O         1       boolean                  Whether to allow
                                                                    1: yes;0: no
  gatewayIp           O         1       String                   Gateway ip
dnsNameservers        O         1..n    List          List of servers
  hostRoutes          O         1..     List           List of routes
allocationPools       O         1..n    List         list of allocation
  -->allocation
  -->start            O         1       String                   Start ip
  -->end              O         1       String                   End ip
================ ========= ============ ======== ================================

**200: ok**

**500: failed**

::

    {

        "vimId": "11111",

        "vimName": "11111",

        "subnets": [

            {

                "status": " ACTIVE",

                "id": " d62019d3-bc6e-4319-9c1d-6722fc136a23",

                "tenant": "tenant1",

                "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22",

                "name": "subnet1",

                "cidr": "10.43.35.0/24",

                "ipVersion": 4,

                "enableDhcp": 1,

                "gatewayIp": "10.43.35.1",

                "dnsNameservers": [],

                "allocationPools": [{

                    "start": "192.168.199.2",

                    "end": "192.168.199.254"

                }],

                "hostRoutes": []

            }

        ]

    }

5.4. **Get Subnets**
--------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/subnets/{subnetid}
Operation              GET
Direction              VNFLCM,NSLCM->MULTIVIM
Description            Get subnet on the VIM
===================== =========================================================

5.4.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

5.4.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  vimId               M         1       String                   vim id
  vimName             O         1       string                   vim name
  cloud-owner         M         1       String                      cloud owner
cloud-region-id       M         1       string                      cloud region id
  status                        1       string                   subnetwork status
  id                            1       string                   subNetwork id
  tenantId            M         1       String                   Tenant UUID
  networkId           O         1       String                   Network Id
  networkName         O         1       String                   Network Name
  name                M         1       String                   SubnetName
  cidr                M         1       String                   Subnet cidr
  ipVersion           M         1       Int                      Ip type
                                                                   4,6
  enableDhcp          O         1       boolean                  Whether to allow
                                                                   1: yes;0: no
  gatewayIp           O         1       String                   Gateway ip
dnsNameservers        O         1..n    List          List of servers
  hostRoutes          O         1..     List           List of routes
allocationPools       O         1..n    List           list of allocation
  -->allocation
  -->start            O         1       String                   Start ip
  -->end              O         1       String                   End ip
================ ========= ============ ======== ================================

202: accepted

500: failed

::

    {

        "status": " ACTIVE",

        "id": " d62019d3-bc6e-4319-9c1d-6722fc136a23",

        "tenant": "tenant1",

        "network_id": "d32019d3-bc6e-4319-9c1d-6722fc136a22",

        "name": "subnet1",

        "cidr": "10.43.35.0/24",

        "ipVersion": 4,

        "enableDhcp": 1,

        "gatewayIp": "10.43.35.1",

        "dnsNameservers": [],

        "allocationPools": [{

            "start": "192.168.199.2",

            "end": "192.168.199.254"

        }],

        "hostRoutes": []

    }

6. **Virtual Port**
^^^^^^^^^^^^^^^^^^^

6.1. **Create Virtual Port**
----------------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/ports
Operation              POST
Direction              VNFLCM->MULTIVIM
Description            Create a vport on the VIM
===================== =========================================================

6.1.1. **Request**
>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  networkId           M         1       string          Network UUID
  subnetId            O         1       string          Subnet UUID
  name                M         1       string          Port name
  macAddress          O         1       string          Mac address
  ip                  O         1       string          Ip address
  vnicType            O         1       string          Virtual network card type,
                                                          the value of three kinds of normal/direct/macvtap
  securityGroups     O          1       string      The IDs of security groups applied to the port
================ ========= ============ ======== ================================

6.1.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  returnCode          M         1       int             0: Already exist 1: Newly created
  vimId               M         1       String          vim id
  vimName             O         1       string          vim name
  cloud-owner         M         1       String          cloud owner
cloud-region-id       M         1       string          cloud region id
  status              M         1       string          status
  id                  M         1       string          Port Id
  name                M         1       string          Port name
  tenantId            M         1       String          Tenant UUID
  networkName         M         1       string          Network name
  networkId           M         1       string          Network Id
  subnetName          M         1       string          Subnet name
  subnetId            M         1       string          SubnetId
  macAddress          O         1       string          Mac address
  ip                  O         1       string          Ip address
  vnicType            O         1       string          Virtual network card type,
                                                          the value of three kinds of normal/direct/macvtap
  securityGroups     O          1       string      List of security group names.
================ ========= ============ ======== ================================

6.2. **Delete Virtual Port**
----------------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/ports/{portid}
Operation              POST
Direction              VNFLCM->MULTIVIM
Description            Delete a vport on the VIM
===================== =========================================================

6.2.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

6.2.2. **Response**
>>>>>>>>>>>>>>>>>>>

204: no content

6.3. **List Virtual Port**
--------------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/ports
Operation              GET
Direction              VNFLCM->MULTIVIM
Description            List vports on the VIM
===================== =========================================================

6.3.1. **Query**
>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  name              M         1         string          Port name to filter out list of virtual ports
================ ========= ============ ======== ================================

6.3.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  vimId               M         1       String          vim id
  vimName             O         1       string          vim name
  cloud-owner         M         1       String          cloud owner
cloud-region-id       M         1       string          cloud region id
  tenantId            M         1       String          Tenant UUID
  Ports               M         0..N    List            ports
  id                  M         1       string          Port Id
  name                M         1       string          Port name
  status              M         1       string          status
  networkName         O         1       string          Network name
  networkId           M         1       string          Network Id
  subnetName          O         1       string          Subnet name
  subnetId            M         1       string          SubnetId
  macAddress          O         1       string          Mac address
  ip                  O         1       string          Ip address
  vnicType            O         1       string          Virtual network card type,
                                                          the value of three kinds of normal/direct/macvtap
  securityGroups      O         1       string          List of security group names.
================ ========= ============ ======== ================================

**200: ok**

**500: failed**


6.4. **Get Virtual Port**
-------------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/ports/{portid}
Operation              GET
Direction              VNFLCM->MULTIVIM
Description            Get a vport on the VIM
===================== =========================================================

6.4.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

6.4.2. **Response**
>>>>>>>>>>>>>>>>>>>

=============== ========= ============ ======== =================================
Parameter       Qualifier Cardinality  Content    Description
=============== ========= ============ ======== =================================
  vimId              M         1       String          vim id
  vimName            O         1       string          vim name
  cloud-owner        M         1       String          cloud owner
cloud-region-id      M         1       string          cloud region id
  status             M         1       string          status
  id                 M         1       string          Port Id
  name               M         1       string          Port name
  tenantId           M         1       String          Tenant UUID
  networkName        M         1       string          Network name
  networkId          M         1       string          Network Id
  subnetName         M         1       string          Subnet name
  subnetId           M         1       string          SubnetId
  macAddress         O         1       string          Mac address
  ip                 O         1       string          Ip address
  vnicType           O         1       string          Virtual network card type,
                                                         the value of three kinds of normal/direct/macvtap
securityGroups       O         1       string          List of security group names
=============== ========= ============ ======== =================================

**200: ok**

**500: failed**


7. **Server Management**
^^^^^^^^^^^^^^^^^^^^^^^^

7.1. **Create Server**
----------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/servers
Operation              POST
Direction              VNFLCM->MULTIVIM
Description            Create a vserver on the VIM
===================== =========================================================

7.1.1. **Request**
>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  name                M         1       string       server name
  boot                M         1       String       Start parameters
  nicArray            O         1..n    List         List
  contextArray        O         1..n    list         list of context
  volumeArray         O         1..n    List         List
availabilityZone      O         1       string       Usable field
  flavorId            M         1       String       server Flavor id
  metadata            O         1       List         Metadata key and value pairs. The maximum size of the metadata key and value is 255 bytes each.
  userdata            O         1       string       Configuration information or scripts to use upon launch. Must be Base64 encoded.
                                                        NOTE: The ‘null’ value allowed in Nova legacy v2 API, but due to the strict input validation, it isn’t allowed in Nova v2.1 API.
  securityGroups      O         1       List         One or more security groups. Specify the name of the security group in the name attribute. If you omit this attribute, the API creates the server in the default security group.
  serverGroup         O         1       string       the ServerGroup for anti-affinity and affinity
================ ========= ============ ======== ================================


**boot**

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  type                M         1       int        Startup mode
                                                     1. boot from the volume
                                                     2. boot from image
  volumeId            O         1       string          Volume Id(type=1)
  imageId             O         1       String          ImageId(type=2)
================ ========= ============ ======== ================================

**contextArray**

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  fileName            M         1       String          Injection file name
  fileData            M         1       string          Injection file content (injection file content inside the <mac>$MAC\_1</mac> $MAC\_1 need to be replaced by the MAC address, of which 1 is NIC index. )
================ ========= ============ ======== ================================


**volumeArray**

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  volumeId            M         1       String          Volume Id
================ ========= ============ ======== ================================

**nicArray**

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  portId              M         1       String          Port Id
================ ========= ============ ======== ================================


::

    {

        "tenant": "tenant1",

        "name": "vm1",

        "availabilityZone": "az1",

        "flavorName": "vm_large",

        "boot": {

            "type": 1,

            " volumeName": "volume1"

        },

        "flavorId": "vm_large_134213",

        "contextArray": [{

            "fileName": "test.yaml",

            "fileData": "…."

        }],

        "volumeArray": [{

            "volumeName": "vol1",

        }],

        "nicArray": [{

            "portId": "port_a"

        }],

        "metada": {

            "foo": "foo value"

        },

        "userdata": "abcdedf"

    }

7.1.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  vimId               M         1       String     vim id
  vimName             O         1       string     vim name
  cloud-owner         M         1       String     cloud owner
cloud-region-id       M         1       string     cloud region id
  returnCode                    1       int        0: Already exist 1: Newly created
  id                  M         1       string     server id
  name                          1       string     server name
  tenantId            M         1       String     Tenant UUID
  boot                M         1       String      Start parameters
  nicArray            O         1..n    List           List
  volumeArray         O         1..n    List            List
availabilityZone      O         1       string           Usable field
  flavorId            M         1       String          server Flavor
  metadata            O         1       List            Metadata key and value pairs. The maximum size of the metadata key and value is 255 bytes each.
  securityGroups      O         1       List            One or more security groups. Specify the name of the security group in the name attribute. If you omit this attribute, the API creates the server in the default security group.
  serverGroup         O          1      string           the ServerGroup for anti-affinity and affinity
  status              M          1      string           Server status,
                                                            0:INACTIVE,1:ACTIVE,2:ERROR
================ ========= ============ ======== ================================


202: accepted

500: failed

::

    {

    "id": "3c9eebdbbfd345658269340b9ea6fb73",

    "name": "vm1",

    "returnCode": 1,

    }

7.2. **Delete Server**
----------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/servers/{serverid}
Operation              DELETE
Direction              VNFLCM,NSLCM->MULTIVIM
Description            Delete a vserver on the VIM
===================== =========================================================

7.2.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

7.2.2. **Response**
>>>>>>>>>>>>>>>>>>>

204: no content

7.3. **List Server**
--------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/servers
Operation              GET
Direction              VNFLCM,NSLCM->MULTIVIM
Description            List vservers on the VIM
===================== =========================================================

7.3.1. **Request**
>>>>>>>>>>>>>>>>>>

msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/vms?{……}

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  name                M         1       string          server name
================ ========= ============ ======== ================================

7.3.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  vimId               M         1       String                                  vim id
  vimName             O         1       string                                  vim name
  cloud-owner         M         1       String                      cloud owner
cloud-region-id       M         1       string                      cloud region id
  servers             M         1       array                                   server list
  id                  M         1       string                                  server id
  name                M         1       string                                  server name
  tenantId            M         1       String                                  Tenant UUID
  boot                M         1       String                                  Start parameters
  nicArray             O        1..n    List                             List
  volumeArray          O        1..n    List                          List
availabilityZone      O         1       string                                  Usable field
  flavorId            M         1       String                                  server Flavor
  metada              O         1       keypair                                 Metadata key and value pairs. The maximum size of the metadata key and value is 255 bytes each.
  securityGroups      O         1       List          One or more security groups. Specify the name of the security group in the name attribute. If you omit this attribute, the API creates the server in the default security group.
  serverGroup          O         1      string                              the ServerGroup for anti-affinity and affinity
================ ========= ============ ======== ================================


200: ok

500: failed

7.4. **Get Server**
-------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/servers/{serverid}
Operation              GET
Direction              VNFLCM,NSLCM->MULTIVIM
Description            Get a vserver on the VIM
===================== =========================================================

7.4.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

7.4.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  vimId               M         1       String      vim id
  vimName             O         1       string      vim name
  cloud-owner         M         1       String      cloud owner
cloud-region-id       M         1       string      cloud region id
  id                  M         1       string      server id
  name                M         1       string      server name
  tenantId            M         1       String      Tenant UUID
  boot                M         1       String      Start parameters
  nicArray             O        1..n    List        List
volumeArray            O        1..n    List        List
availabilityZone      O         1       string      Usable field
  flavorId            M         1       String      server Flavor
  metadata            O         1       List        Metadata key and value pairs. The maximum size of the metadata key and value is 255 bytes each.
  serverGroup         O         1       List        One or more security groups. Specify the name of the security group in the name attribute. If you omit this attribute, the API creates the server in the default security group.
  serverGroup         O         1       string      the ServerGroup for anti-affinity and affinity
================ ========= ============ ======== ================================


200: ok

500: failed


7.5. **Heal Server**
----------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/servers/{serverid}/action
Operation              POST
Direction              VNFLCM,NSLCM->MULTIVIM
Description            Act on a vserver on the VIM
===================== =========================================================

7.5.1. **Request**
>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  os-start            M         1       none       The action to start a stopped server.
  os-stop             M         1       none       The action to stop a running server.
  reboot              M         1       object     The action to reboot a server.
  type                O         1       int        The type of the reboot action.
                                                      The valid values are HARD and SOFT
================ ========= ============ ======== ================================


7.5.2. **Response**
>>>>>>>>>>>>>>>>>>>

Normal response codes: 202

Error response codes: unauthorized(401), forbidden(403), itemNotFound(404), conflict(409)

8. **Flavor Management**
^^^^^^^^^^^^^^^^^^^^^^^^

8.1. **Create Flavor**
----------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/flavors
Operation              POST
Direction              VNFLCM->MULTIVIM
Description            Create a flavor on the VIM
===================== =========================================================

8.1.1. **Request**
>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  name                M         1       string     Flavor Name
  vcpu                M         1       int        Virtual CPU number
  memory              M         1       int        Memory size
  disk                M         1       int        The size of the root disk
  ephemeral           O         1       int        The size of the ephemeral disk
  swap                O         1       int        The size of the swap disk
  isPublic            O         1       boolean    Whether the flavor is public (available to all projects) or scoped to a set of projects. Default is True if not specified.
  extraSpecs          O         0..N    List       EPA parameter
================ ========= ============ ======== ================================


8.1.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  id                  M         1       string     Flavor id
  name                M         1       string     Flavor name
  returnCode          M         1       int        0: Already exist 1: Newly created
  tenantId            M         1       String     Tenant UUID
  vcpu                M         1       int        Virtual CPU number
  memory              M         1       int        Memory size
  disk                M         1       int        The size of the root disk
  ephemeral           M         1       int        The size of the ephemeral disk
  swap                M         1       int        The size of the swap disk
  isPublic            M         1       boolean    Whether the flavor is public (available to all projects) or scoped to a set of projects. Default is True if not specified.
  extraSpecs          O        0..N     List       EPA parameter
  vimId               M         1       String     vim id
  vimName             O         1       string     vim name
  cloud-owner         M         1       String     cloud owner
cloud-region-id       M         1       string     cloud region id
================ ========= ============ ======== ================================


8.2. **Delete Flavor**
----------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/flavors /{flavorid}
Operation              DELETE
Direction              VNFLCM->MULTIVIM
Description            Delete a flavor on the VIM
===================== =========================================================

8.2.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

8.2.2. **Response**
>>>>>>>>>>>>>>>>>>>

204: no content

8.3. **List Flavor**
--------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/flavors
Operation              GET
Direction              VNFLCM,NSLCM->MULTIVIM
Description            List flavors on the VIM
===================== =========================================================

8.3.1. **Query**
>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  name                M         1       string          Flavor name to filter out list
================ ========= ============ ======== ================================

8.3.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  flavors             M         0..N    list      Vm list
  id                  M         1       string    Flavor id
  name                M         1       string    Flavor Name
  vcpu                M         1       int       Virtual CPU number
  memory              M         1       int       Memory size
  disk                M         1       int       The size of the root disk
  ephemeral           M         1       int       The size of the ephemeral disk
  swap                M         1       int       The size of the swap disk
  isPublic            M         1       boolean   Whether the flavor is public (available to all projects) or scoped to a set of projects. Default is True if not specified.
  extraSpecs          O         0..N    List      EPA parameter
  vimId               M         1       String    vim id
  vimName             O         1       string    vim name
  cloud-owner         M         1       String    cloud owner
cloud-region-id       M         1       string    cloud region id
  tenantId            M         1       String    Tenant UUID
================ ========= ============ ======== ================================


200: ok

500: failed

8.4. **Get Flavor**
-------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/flavors/{flavorid}
Operation              GET
Direction              VNFLCM->MULTIVIM
Description            Get a flavor on the VIM
===================== =========================================================

8.4.1. **Request**
>>>>>>>>>>>>>>>>>>

N/A

8.4.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  id                  M         1       string     Flavor id
  name                M         1       string     Flavor Name
  vcpu                M         1       int        Virtual CPU number
  memory              M         1       int        Memory size
  disk                M         1       int        The size of the root disk
  ephemeral           M         1       int        The size of the ephemeral disk
  swap                M         1       int        The size of the swap disk
  isPublic            M         1       boolean    Whether the flavor is public (available to all projects) or scoped to a set of projects. Default is True if not specified.
  extraSpecs          O         0..N    List       EPA parameter
  vimId               M         1       String     vim id
  vimName             O         1       string     vim name
  cloud-owner         M         1       String     cloud owner
cloud-region-id       M         1       string     cloud region id
  tenantId            M         1       String     Tenant UUID
================ ========= ============ ======== ================================

200: ok

500: failed

9. **Volume Management**
^^^^^^^^^^^^^^^^^^^^^^^^

9.1. **Create Volume**
----------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/volumes
Operation              POST
Direction              VNFLCM->MULTIVIM
Description            Create volume on the VIM
===================== =========================================================

9.1.1. **Request**
>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  name                M         1       string          Volume name
  volumeSize          M         1       int             Volume size
  imageId             O         1       string          Image UUID
  volumeType          O         1       string          Volume type
availabilityZone      O         1       string          Usable field
================ ========= ============ ======== ================================

::

    {

    "tenant": "tenant1",

    "volumeName": "volume1",

    "volumeSize": 3,

    "imageName": "cirros.qcow2",

    "volumeType": "volumetype1",

    "availabilityZone": "zone1"

    }

9.1.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  returnCode          M         1       int             0: Already exist 1: Newly created
  vimId               M         1       String          vim id
  vimName             O         1       string          vim name
  cloud-owner         M         1       String          cloud owner
cloud-region-id       M         1       string          cloud region id
  tenantId            M         1       String          Tenant UUID
  status              M         1       string          Volume status
  id                  M         1       string          Volume id
  name                M         1       string          Volume name
  volumeType          O         1       string          Volume type
availabilityZone      O         1       string          Availability Zone
================ ========= ============ ======== ================================

202: accepted

500: failed

::

    {

    "id": "bc9eebdbbfd356458269340b9ea6fb73",

    "name": "volume1",

    "returnCode": 1,

    }

9.2. **Delete Volume**
----------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/volumes/{volumeId}
Operation              DELETE
Direction              VNFLCM->MULTIVIM
Description            Delete volume on the VIM
===================== =========================================================

9.2.1. **Request**
>>>>>>>>>>>>>>>>>>

    N/A

9.2.2. **Response**
>>>>>>>>>>>>>>>>>>>

    204: no content

9.3. **List Volumes**
---------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/volumes
Operation              GET
Direction              VNFLCM->MULTIVIM
Description            List volumes on the VIM
===================== =========================================================

9.3.1. **Request**
>>>>>>>>>>>>>>>>>>

    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/volumes?{……}

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  name                M         1       string          Volume name
================ ========= ============ ======== ================================

9.3.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  vimId               M         1       String                 vim id
  vimName             O         1       string                 vim name
  cloud-owner         M         1       String       cloud owner
cloud-region-id       M         1       string        cloud region id
  tenantId            M         1       String                 Tenant UUID
  volumes             M         1       Array
  id                  M         1       string                 Volume id
  name                M         1       string                 Volume name
  createTime          O         1       string                 Create time
  status              M         1       string                 Volume status
  volumeSize          M         1       int                    Volume size
  volumeType          M         1       string                 Volume type
availabilityZone      M         1       string                 Availability Zone
  attachments         M         1..n    list        List of additional information on the cloud disk
================ ========= ============ ======== ================================

200: ok

500: failed

::

    {

        "volumes": [

            {

                "status": "available",

                "name": "test",

                "attachments": [],

                "createTime": "2015-12-02T07:57:23.000000",

                " volumeType ": "ws",

                "id": "91b39ebb-acdc-43f3-9c2e-b0da7ad0fd55",

                "size": 20

            },

            {

                "status": "in-use",

                "name": "wangsong",

                "attachments": [

                    {

                        "device": "/dev/vdc",

                        "serverId": "3030e666-528e-4954-88f5-cc21dab1262b",

                        "volumeId": "4bd3e9eb-cd8b-456a-8589-910836a0ab31",

                        "hostName": null,

                        "id": "4bd3e9eb-cd8b-456a-8589-910836a0ab31"

                    }

                ],

                "createTime": "2015-12-02T06:39:40.000000",

                " volumeType ": null,

                "id": "4bd3e9eb-cd8b-456a-8589-910836a0ab31",

                "size": 40

            }

        ]

    }

9.4. **Get Volumes**
--------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/volumes/{volumeid}
Operation              GET
Direction              VNFLCM->MULTIVIM
Description            Get volume on the VIM
===================== =========================================================

9.4.1. **Request**
>>>>>>>>>>>>>>>>>>

    N/A

9.4.2. **Response**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  vimId               M         1       String                 vim id
  vimName             O         1       string                 vim name
  cloud-owner         M         1       String                      cloud owner
cloud-region-id       M         1       string                      cloud region id
  tenantId            M         1       String                 Tenant UUID
  id                            1       string                 Volume id
  name                          1       string                 Volume name
  createTime                    1       string                 Create time
  status                        1       string                 Volume status
  volumeType                    1       List         Volume type
  volumeSize                    1       int                    Volume size
availabilityZone      M         1       string                 Availability Zone
  attachments         M         1..n    list       List of additional information on the cloud disk
================ ========= ============ ======== ================================

**attachment:**

============== ========= ============ ======== ==================================
Parameter      Qualifier Cardinality  Content    Description
============== ========= ============ ======== ==================================
  device                      1       string          Device name
  serverId                    1       string          VM id
  volumeId                    1       string          Volume id
  hostName                    1       string          Host name
  id                          1       string          Device id
============== ========= ============ ======== ==================================

200: ok

500: failed

::

    {

        "status": "in-use",

        "name": "wangsong",

        "attachments": [

            {

                "device": "/dev/vdc",

                "serverId": "3030e666-528e-4954-88f5-cc21dab1262b",

                "volumeId": "4bd3e9eb-cd8b-456a-8589-910836a0ab31",

                "hostName": null,

                "id": "4bd3e9eb-cd8b-456a-8589-910836a0ab31"

            }

        ],

        "createTime": "2015-12-02T06:39:40.000000",

        "volumeType ": null,

        "id": "4bd3e9eb-cd8b-456a-8589-910836a0ab31",

        "volumeSize ": 40

    }

10. **Tenant Management**
^^^^^^^^^^^^^^^^^^^^^^^^^

10.1. **List tenants**
----------------------


===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/tenants
Operation              GET
Direction              VNFLCM->MULTIVIM
Description            List tenants on the VIM
===================== =========================================================


10.1.1. **Query**
>>>>>>>>>>>>>>>>>

================= ========= ============ ======== ================================
Parameter         Qualifier Cardinality  Content    Description
================= ========= ============ ======== ================================
name={tenantname}      O         1       string          Tenant name to filter output list
================= ========= ============ ======== ================================


10.1.2. **Response**
>>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ================================
  vimId               M         1       String          vim id
  vimName             O         1       string          vim name
  cloud-owner         M         1       String          cloud owner
cloud-region-id       M         1       string          cloud region id
  tenants             M         1       Array
  id                  M         1       string          tenant UUID
  name                M         1       string          tenant name
================ ========= ============ ======== ================================

200: ok

500: failed

::

    {

        " tenants ": [

            {

                "id": "1",

                "name": "test\_a"

            }

        ]

    }

11. **Limits**
^^^^^^^^^^^^^^

11.1. **List Limits of resouces**
---------------------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/limits
Operation              GET
Direction              VNFLCM->MULTIVIM
Description            Get limits on the VIM
===================== =========================================================


11.1.1. **Request**
>>>>>>>>>>>>>>>>>>>

N/A

11.1.2. **Response**
>>>>>>>>>>>>>>>>>>>>

======================== ========= ============ ======== ========================
Parameter                Qualifier Cardinality  Content    Description
======================== ========= ============ ======== ========================
  vimId                       M         1       String          vim id                                                          vimName                     O         1       string          vim name
  cloud-owner                 M         1       String          cloud owner
cloud-region-id               M         1       string          cloud region id                                       tenantId                      M         1       string          Tenant UUID                                                     maxPersonality                O         1       int             The number of allowed injected files for each tenant.
  maxPersonalitySize          O         1       int             The number of allowed bytes of content for each injected file.
  maxServerGroupMembers       O         1       int             The number of allowed members for each server group.
  maxServerGroups             O         1       int             The number of allowed server groups for each tenant.
  maxServerMeta               O         1       int             The number of allowed metadata items for each instance.
  maxTotalCores               O         1       int             The number of allowed instance cores for each tenant.
  maxTotalInstances           O         1       int             The number of allowed instances for each tenant.
  maxTotalKeypairs            O         1       int             The number of allowed key pairs for each user.
  maxTotalRAMSize             O         1       int             The amount of allowed instance RAM, in MB, for each tenant.
maxTotalVolumeGigabytes       O         1       int             The maximum total amount of volumes, in gibibytes (GiB).
  maxTotalVolumes             O         1       int             The maximum number of volumes.
  totalVolumesUsed            O         1       int             The total number of volumes used.
  totalGigabytesUsed          O         1       int             The total number of gibibytes (GiB) used.
  network                     O         1       int             The number of networks allowed for each project.
  subnet                      O         1       int             The number of subnets allowed for each project.
  subnetpool                  O         1       int             The number of subnet pools allowed for each project.
  security\_group\_rule       O         1       int             The number of security group rules allowed for each project.
  security\_group             O         1       int             The number of security groups allowed for each project.
  router                      O         1       int             The number of routers allowed for each project.
  port                        O         1       int             The number of ports allowed for each project.
======================== ========= ============ ======== ========================

200: ok

500: failed

::

    {

    "maxPersonality": 5,

    "maxPersonalitySize": 10240,

    "maxServerMeta": 128,

    "maxTotalCores": 20,

    "maxTotalInstances": 10,

    "maxTotalKeypairs": 100,

    "maxTotalRAMSize": 51200,

    "maxServerGroups": 10,

    "maxServerGroupMembers": 10,

    }

12. **Host Management**
^^^^^^^^^^^^^^^^^^^^^^^

12.1. **List hosts**
--------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/hosts
Operation              GET
Direction              VNFLCM->MULTIVIM
Description            list hosts on the VIM
===================== =========================================================

12.1.1. **Request**
>>>>>>>>>>>>>>>>>>>

N/A

12.1.2. **Response**
>>>>>>>>>>>>>>>>>>>>

=============== ========= ============ ======== ==================================
Parameter       Qualifier Cardinality  Content    Description
=============== ========= ============ ======== ==================================
  vimId              M         1       String            vim id
  vimName            O         1       string            vim name
  cloud-owner        M         1       String            cloud owner
cloud-region-id      M         1       string            cloud region id
  tenantId           M         1       string            Tenant Name
  hosts              M         1       Array     List of host information
  service            M         1       string            The service running on the host
  name               M         1       string            host name
  zone               O         1       string            Available zone for the host
=============== ========= ============ ======== ==================================

200: ok

500: failed

::

    {

        "vimId": "123",

        "vimName": "vimName",

        "tenantId": "tenantId1"

        "hosts": [

            {

                "name": "b6e4adbc193d428ea923899d07fb001e",

                "service": "conductor",

                "zone": "internal",

                "vimId": "123",

                "vimName": "vimName",

                "tenantId": "tenantId1"

            },

            {

                "name": "09c025b0efc64211bd23fc50fa974cdf",

                "service": "compute",

                "zone": "nova"

                "vimId": "123",

                "vimName": "vimName",

                "tenantId": "tenantId1"

            },

            {

                "name": "e73ec0bd35c64de4a1adfa8b8969a1f6",

                "service": "consoleauth",

                "zone": "internal"

                "vimId": "123",

                "vimName": "vimName",

                "tenantId": "tenantId1"

            },

            {

                "host\_name": "396a8a0a234f476eb05fb9fbc5802ba7",

                "service": "network",

                "zone": "internal"

                "vimId": "123",

                "vimName": "vimName",

                "tenantId": "tenantId1"

            },

            {

                "name": "abffda96592c4eacaf4111c28fddee17",

                "service": "scheduler",

                "zone": "internal"

                "vimId": "123",

                "vimName": "vimName",

                "tenantId": "tenantId1"

            }

        ]

    }

12.2. **Get host**
------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/hosts/{hostname}
Operation              GET
Direction              VNFLCM->MULTIVIM
Description            Get a host on the VIM
===================== =========================================================


12.2.1. **Request**
>>>>>>>>>>>>>>>>>>>

12.2.2. **Response**
>>>>>>>>>>>>>>>>>>>>

=============== ========= ============ ======== ==================================
Parameter       Qualifier Cardinality  Content    Description
=============== ========= ============ ======== ==================================
  vimId              M         1       String                vim id
  vimName            O         1       string                vim name
cloud-owner          M         1       String                cloud owner
cloud-region-id      M         1       string                cloud region id
  tenantId           M         1       string                Tenant Name
  host               M         1       List     Host resource info
  resource           M                 1..N                Object                Resource description
  cpu                M         1       Int                   The cpu info on the host.
  memory_mb          M         1       int                   The memory info on the host (in MB).
  name               M         1       string                host name
  project            M         1       string                Value: total, used_now, used_max or specific project_id
  disk_gb            M         1       int                   The disk info on the host (in GB).
=============== ========= ============ ======== ==================================

200: ok

500: failed

::

    {

        "cpu": 1,

        "disk\_gb": 1028,

        "name": "c1a7de0ac9d94e4baceae031d05caae3",

        "memory\_mb": 8192,

        "vimId": "123",

        "vimName": "vimName",

        "tenantId": "tenantId1",

        "host": [

            {

                "memory\_mb": 4960,

                "name": " c1a7de0ac9d94e4baceae031d05caae3",

                "disk\_gb": 92,

                "project": "(total)",

                "cpu": 4

            },

            {

                "memory\_mb": 1536,

                "name": " c1a7de0ac9d94e4baceae031d05caae3",

                "disk\_gb": 2,

                "project": "(used\_now)",

                "cpu": 2

            },

            {

                "memory\_mb": 1024,

                "name": " c1a7de0ac9d94e4baceae031d05caae3",

                "disk\_gb": 2,

                "project": "(used\_max)",

                "cpu": 2

            },

            {

                "memory\_mb": 1024,

                "name": " c1a7de0ac9d94e4baceae031d05caae3",

                "disk\_gb": 2,

                "project": "568f7ec425db472ba348251bf1e7eebd",

                "cpu": 2

            }

        ],

        "vimName": "openstack\_newton",

        "vimId": "dd5b6da9-5984-401f-b89f-78a9776b1a73",

        "tenantId": "568f7ec425db472ba348251bf1e7eebd"

    }

13. **VIM Management**
^^^^^^^^^^^^^^^^^^^^^^

13.1. **Update VIM Info**
-------------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/registry
Operation              POST
Direction              ESR-> MULTICLOUD
Description            Register a VIM instance to ONAP
===================== =========================================================

13.1.1. **Request**
>>>>>>>>>>>>>>>>>>>

============== ========= ============ ======== ==================================
Parameter      Qualifier Cardinality  Content    Description
============== ========= ============ ======== ==================================
defaultTenant       M         1       string          default tenant name
============== ========= ============ ======== ==================================

13.1.2. **Response**
>>>>>>>>>>>>>>>>>>>>

NA

202: accept

400: failed

13.2. **Unregistry VIM**
------------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}
Operation              DELETE
Direction              ESR-> MULTICLOUD
Description            Unregister a VIM instance from ONAP
===================== =========================================================


13.2.1. **Request**
>>>>>>>>>>>>>>>>>>>

NA

13.2.2. **Response**
>>>>>>>>>>>>>>>>>>>>

NA

204: No content found

400: failed



14. **infrastructure workload LCM**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

14.1. **Instantiate infrastructure workload**
----------------------------------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/infra_workload
Operation              POST
Direction              SO-> MULTICLOUD
Description            Instantiate infrastructure workload
===================== =========================================================

14.1.1. **Request**
>>>>>>>>>>>>>>>>>>>

================ ========= ============ ======== ==================================
Parameter        Qualifier Cardinality  Content    Description
================ ========= ============ ======== ==================================
generic-vnf-id       O         1        string          generif VNF ID to search AAI object
vf-module-id         O         1        string          vf module id  to search AAI object
oof_directives       O         1        Object          oof directives to update template_data
sdnc_directives      O         1        Object          sdnc directives to update template_data
template_type        M         1        string          template type with which the MultiCloud plugin inteprates template_data
                                                            "heat",etc.
template_data        M         1        Object          workload template data to instantiate workload onto VIM/Cloud instance
================ ========= ============ ======== ==================================

::

  {
     "generic-vnf-id":"vnf-id-111111",
     "vf-module-id":"vf-module-id-2222222",
     "oof_directives":{},
     "sdnc_directives":{},
     "template_type":"heat",
     "template_data":{{
         "files":{  },
         "disable_rollback":true,
         "parameters":{
            "flavor":"m1.heat"
         },
         "stack_name":"teststack",
         "template":{
            "heat_template_version":"2013-05-23",
            "description":"Simple template to test heat commands",
            "parameters":
            {
               "flavor":{
                  "default":"m1.tiny",
                  "type":"string"
               }
            },
            "resources":{
               "hello_world":{
                  "type":"OS::Nova::Server",
                  "properties":{
                     "key_name":"heat_key",
                     "flavor":{
                        "get_param":"flavor"
                     },
                     "image":"40be8d1a-3eb9-40de-8abd-43237517384f",
                     "user_data":"#!/bin/bash -xv\necho \"hello world\" &gt; /root/hello-world.txt\n"
                  }
               }
            }
         },
         "timeout_mins":60
     }
  }

14.1.2. **Response**
>>>>>>>>>>>>>>>>>>>>

================== ========= ============ ======== ==================================
Parameter          Qualifier Cardinality  Content    Description
================== ========= ============ ======== ==================================
template_type          M         1        string          template type with which the MultiCloud plugin inteprates template_data
                                                            "heat",etc.
workload_id            M         1        string          The ID of infrastructure workload resource
template_response      M         1        Object          response from VIM/Cloud instance which is instantiating workload
================== ========= ============ ======== ==================================


201: Created

202: Accepted

400: Bad Request

401: Unauthorized

409: Conflict

::

    {
        "template_type":"heat",
        "workload_id": "1234567890abcd"
        "template_response":
        {
            "stack": {
            "id": "1234567890abcd",
            "links": [
                {
                     "href": "",
                     "rel": "self"
                }
            ]
        }
    }


14.2. **Query infrastructure workload**
---------------------------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/infra_workload/{workload-id}
Operation              GET
Direction              SO-> MULTICLOUD
Description            Query the status of the infrastructure workload
===================== =========================================================


14.2.1. **Request**
>>>>>>>>>>>>>>>>>>>

NA

14.2.2. **Response**
>>>>>>>>>>>>>>>>>>>>

================== ========= ============ ======== ==================================
Parameter          Qualifier Cardinality  Content    Description
================== ========= ============ ======== ==================================
template_type          M         1        string          template type with which the MultiCloud plugin inteprates template_data
                                                            "heat",etc.
workload_id            M         1        string          The ID of infrastructure workload resource
workload_status        M         1        string          Status of infrastructure workload:
                                                              DELETE_IN_PROGRESS, CREATE_COMPLETE, CREATE_FAILED
                                                              DELETE_IN_PROGRESS, DELETE_COMPLETE, DELETE_FAILED
                                                              UPDATE_IN_PROGRESS, UPDATE_COMPLETE, UPDATE_FAILED
================== ========= ============ ======== ==================================


200: OK

400: Bad Request

401: Unauthorized

404: Not Found

500: Internal Server Error

::

    {
        "template_type":"heat",
        "workload_id": "1234567890abcd",
        "workload_status":"CREATE_IN_PROCESS"
    }


14.3. **Delete infrastructure workload**
----------------------------------------

===================== =========================================================
IF Definition          Description
===================== =========================================================
URI                    msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/infra_workload/{workload-id}
Operation              DELETE
Direction              SO-> MULTICLOUD
Description            DELETE the infrastructure workload
===================== =========================================================


14.3.1. **Request**
>>>>>>>>>>>>>>>>>>>

NA

14.3.2. **Response**
>>>>>>>>>>>>>>>>>>>>

NA


204: No Content, The server has fulfilled the request by deleting the resource.

400: Bad Request

401: Unauthorized

404: Not Found

500: Internal Server Error