Add documents for multi-version API support
This patch provides Tacker documents for multi-version API support. VNF LCM API Version 2 is added to API Reference and the page hierarchy is changed for readability. Also, the Show VNF LCM Versions command is added to Command-Line Interface Reference. Furthermore, a manual of the Userdata script is added to Tacker User Guide. Implements: blueprint multi-version-api Implements: blueprint support-nfv-solv3-start-and-terminate-vnf Implements: blueprint support-nfv-solv3-query-vnf-instances Implements: blueprint support-nfv-solv3-query-operation-occurrences Implements: blueprint support-nfv-solv3-subscriptions Change-Id: I603e32090303af080b17e549a0caf7e862aa7e1e
This commit is contained in:
parent
2c2b30b5f5
commit
f24afcf705
@ -2,7 +2,22 @@
|
||||
NFV Orchestration Service APIs
|
||||
==============================
|
||||
|
||||
NFV Orchestration API v1.0
|
||||
--------------------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
v1/index
|
||||
v1/legacy
|
||||
v1/vnfpkgm
|
||||
v1/vnflcm_versions
|
||||
v1/vnflcm
|
||||
|
||||
NFV Orchestration API v2.0
|
||||
--------------------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
v1/vnflcm_versions
|
||||
v2/vnflcm
|
||||
|
@ -1,8 +1,8 @@
|
||||
:tocdepth: 2
|
||||
|
||||
##########################
|
||||
NFV Orchestration API v1.0
|
||||
##########################
|
||||
#################
|
||||
Legacy Tacker API
|
||||
#################
|
||||
|
||||
.. rest_expand_all::
|
||||
|
||||
@ -19,5 +19,3 @@ NFV Orchestration API v1.0
|
||||
.. include:: classifiers.inc
|
||||
.. include:: nsds.inc
|
||||
.. include:: nss.inc
|
||||
.. include:: vnf_packages.inc
|
||||
.. include:: vnflcm.inc
|
@ -1341,7 +1341,7 @@ vnf_link_port_cp_instance_id:
|
||||
instance.
|
||||
|
||||
The value refers to an "extCpInfo" item in the VnfInstance or a
|
||||
"vnfcCpInfo" item of a "vnfcResouceInfo" item in the VnfInstance.
|
||||
"vnfcCpInfo" item of a "vnfcResourceInfo" item in the VnfInstance.
|
||||
in: body
|
||||
required: false
|
||||
type: string
|
||||
|
44
api-ref/source/v1/parameters_vnflcm_versions.yaml
Normal file
44
api-ref/source/v1/parameters_vnflcm_versions.yaml
Normal file
@ -0,0 +1,44 @@
|
||||
# variables in header
|
||||
|
||||
api_Major_Version:
|
||||
description: |
|
||||
Indicates the major version of API.
|
||||
in: path
|
||||
required: true
|
||||
type: string
|
||||
|
||||
# variables in body
|
||||
|
||||
api_Versions:
|
||||
description: |
|
||||
Version(s) supported for the API signalled by the uriPrefix attribute.
|
||||
in: body
|
||||
required: true
|
||||
type: Structure (inlined)
|
||||
isDeprecated:
|
||||
description: |
|
||||
This attribute indicates whether use of the version signalled
|
||||
by the version attribute is deprecated (true) or not (false).
|
||||
in: body
|
||||
required: false
|
||||
type: boolean
|
||||
retirementDate:
|
||||
description: |
|
||||
The date and time after which the API version will no longer be
|
||||
supported. This attribute may be included if the value of the isDeprecated
|
||||
attribute is set to true and shall be absent otherwise.
|
||||
in: body
|
||||
required: false
|
||||
type: datetime
|
||||
uriPrefix:
|
||||
description: |
|
||||
URI prefix for the API.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
version:
|
||||
description: |
|
||||
Supported version.
|
||||
in: body
|
||||
required: true
|
||||
type: String
|
@ -0,0 +1,13 @@
|
||||
{
|
||||
"uriPrefix": "/vnflcm",
|
||||
"apiVersions": [
|
||||
{
|
||||
"version": "1.3.0",
|
||||
"isDeprecated": false
|
||||
},
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"isDeprecated": false
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
{
|
||||
"uriPrefix": "/vnflcm/v1",
|
||||
"apiVersions": [
|
||||
{
|
||||
"version": "1.3.0",
|
||||
"isDeprecated": false
|
||||
}
|
||||
]
|
||||
}
|
@ -63,7 +63,7 @@
|
||||
409:
|
||||
default: |
|
||||
This operation conflicted with another operation on this resource.
|
||||
duplcate_zone: |
|
||||
duplicate_zone: |
|
||||
There is already a zone with this name.
|
||||
416:
|
||||
default: |
|
||||
|
9
api-ref/source/v1/vnflcm.rst
Normal file
9
api-ref/source/v1/vnflcm.rst
Normal file
@ -0,0 +1,9 @@
|
||||
:tocdepth: 2
|
||||
|
||||
#####################################################################
|
||||
Virtualized Network Function Lifecycle Management Interface (VNF LCM)
|
||||
#####################################################################
|
||||
|
||||
.. rest_expand_all::
|
||||
|
||||
.. include:: vnflcm.inc
|
97
api-ref/source/v1/vnflcm_versions.inc
Normal file
97
api-ref/source/v1/vnflcm_versions.inc
Normal file
@ -0,0 +1,97 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
==============================================================
|
||||
Virtualized Network Function Lifecycle Management API Versions
|
||||
==============================================================
|
||||
|
||||
List VNFLCM API versions
|
||||
========================
|
||||
|
||||
.. rest_method:: GET /vnflcm/api_versions
|
||||
|
||||
This method retrieves the list of all supported versions for
|
||||
VNF LCM API.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/create-vnf-instance-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm_versions.yaml
|
||||
|
||||
- uriPrefix: uriPrefix
|
||||
- apiVersions: api_Versions
|
||||
- \>version: version
|
||||
- \>isDeprecated: isDeprecated
|
||||
- \>retirementDate: retirementDate
|
||||
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm_versions/list-vnflcm-version-response.json
|
||||
:language: javascript
|
||||
|
||||
Show VNFLCM API versions
|
||||
========================
|
||||
|
||||
.. rest_method:: GET /vnflcm/{apiMajorVersion}/api_versions
|
||||
|
||||
This method retrieves the list of supported versions for
|
||||
VNF LCM API corresponding to the {apiMajorVersion}.
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm_versions.yaml
|
||||
|
||||
- apiMajorVersion: api_Major_Version
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm_versions.yaml
|
||||
|
||||
- uriPrefix: uriPrefix
|
||||
- apiVersions: api_Versions
|
||||
- \>version: version
|
||||
- \>isDeprecated: isDeprecated
|
||||
- \>retirementDate: retirementDate
|
||||
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm_versions/show-vnflcm-version-response.json
|
||||
:language: javascript
|
||||
|
9
api-ref/source/v1/vnflcm_versions.rst
Normal file
9
api-ref/source/v1/vnflcm_versions.rst
Normal file
@ -0,0 +1,9 @@
|
||||
:tocdepth: 2
|
||||
|
||||
#############################################################################
|
||||
Virtualized Network Function Lifecycle Management Versions (VNF LCM versions)
|
||||
#############################################################################
|
||||
|
||||
.. rest_expand_all::
|
||||
|
||||
.. include:: vnflcm_versions.inc
|
9
api-ref/source/v1/vnfpkgm.rst
Normal file
9
api-ref/source/v1/vnfpkgm.rst
Normal file
@ -0,0 +1,9 @@
|
||||
:tocdepth: 2
|
||||
|
||||
####################################################
|
||||
Virtualized Network Function Packages (VNF packages)
|
||||
####################################################
|
||||
|
||||
.. rest_expand_all::
|
||||
|
||||
.. include:: vnf_packages.inc
|
1426
api-ref/source/v2/parameters_vnflcm.yaml
Normal file
1426
api-ref/source/v2/parameters_vnflcm.yaml
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,3 @@
|
||||
{
|
||||
"callbackUri": "http://127.0.0.1/"
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/subscriptions/084cf869-d787-4c1a-b43b-405a25ed98da"
|
||||
}
|
||||
},
|
||||
"callbackUri": "http://127.0.0.1/",
|
||||
"id": "084cf869-d787-4c1a-b43b-405a25ed98da",
|
||||
"verbosity": "FULL"
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"vnfInstanceDescription": "test sample1",
|
||||
"vnfInstanceName": "sample1",
|
||||
"vnfdId": "da459819-a2eb-442b-b9a2-0c1c02466baf"
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
{
|
||||
"_links": {
|
||||
"instantiate": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/instantiate"
|
||||
},
|
||||
"self": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee"
|
||||
}
|
||||
},
|
||||
"extensions": {},
|
||||
"id": "99e2bae9-45d3-4ca1-83f4-34d44ca25bee",
|
||||
"instantiationState": "NOT_INSTANTIATED",
|
||||
"metadata": {},
|
||||
"vnfConfigurableProperties": {},
|
||||
"vnfInstanceDescription": "test sample1",
|
||||
"vnfInstanceName": "sample1",
|
||||
"vnfProductName": "Sample VNF",
|
||||
"vnfProvider": "Company",
|
||||
"vnfSoftwareVersion": "1.0",
|
||||
"vnfdId": "da459819-a2eb-442b-b9a2-0c1c02466baf",
|
||||
"vnfdVersion": "1.0"
|
||||
}
|
@ -0,0 +1,128 @@
|
||||
{
|
||||
"extManagedVirtualLinks": [
|
||||
{
|
||||
"id": "7a6fe192-c34b-4029-937d-f1a2e7a00f5a",
|
||||
"resourceId": "11f8a056-0495-4ca6-8de9-94402604663f",
|
||||
"vnfVirtualLinkDescId": "internalVL1"
|
||||
}
|
||||
],
|
||||
"extVirtualLinks": [
|
||||
{
|
||||
"extCps": [
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU1_CP1_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"numDynamicAddresses": 1,
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU1_CP1"
|
||||
},
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU2_CP1_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"fixedAddresses": [
|
||||
"10.10.0.101"
|
||||
],
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU2_CP1"
|
||||
}
|
||||
],
|
||||
"id": "b0b2f836-a275-4374-834e-ed336a563b1e",
|
||||
"resourceId": "1948231e-bbf0-4ff9-a692-40f8d6d5c90d"
|
||||
},
|
||||
{
|
||||
"extCps": [
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU1_CP2_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"numDynamicAddresses": 1,
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU1_CP2"
|
||||
},
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU2_CP2_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"fixedAddresses": [
|
||||
"10.10.1.101"
|
||||
],
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU2_CP2"
|
||||
}
|
||||
],
|
||||
"id": "6766a8d4-cad1-43f1-b0cb-ce0ef9267661",
|
||||
"resourceId": "5af7e28a-e744-4b4f-a1a4-c7d0f7d93cd7"
|
||||
}
|
||||
],
|
||||
"flavourId": "simple",
|
||||
"instantiationLevelId": "instantiation_level_1",
|
||||
"vimConnectionInfo": {
|
||||
"vim1": {
|
||||
"accessInfo": {
|
||||
"password": "devstack",
|
||||
"project": "nfv",
|
||||
"projectDomain": "Default",
|
||||
"region": "RegionOne",
|
||||
"userDomain": "Default",
|
||||
"username": "nfv_user"
|
||||
},
|
||||
"interfaceInfo": {
|
||||
"endpoint": "http://localhost/identity/v3"
|
||||
},
|
||||
"vimId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
[
|
||||
{
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/subscriptions/cd87e3d6-9bbe-4ad1-bb21-0f5c3e4e777d"
|
||||
}
|
||||
},
|
||||
"callbackUri": "http://127.0.0.1/",
|
||||
"id": "cd87e3d6-9bbe-4ad1-bb21-0f5c3e4e777d",
|
||||
"verbosity": "FULL"
|
||||
}
|
||||
]
|
473
api-ref/source/v2/samples/vnflcm/list-vnf-instance-response.json
Normal file
473
api-ref/source/v2/samples/vnflcm/list-vnf-instance-response.json
Normal file
@ -0,0 +1,473 @@
|
||||
[
|
||||
{
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee"
|
||||
},
|
||||
"terminate": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/terminate"
|
||||
}
|
||||
},
|
||||
"extensions": {},
|
||||
"id": "99e2bae9-45d3-4ca1-83f4-34d44ca25bee",
|
||||
"instantiatedVnfInfo": {
|
||||
"extCpInfo": [
|
||||
{
|
||||
"associatedVnfcCpId": "f52ba062-48fc-4ff1-bad0-e3a5b29d50bd",
|
||||
"cpConfigId": "VDU2_CP2_1",
|
||||
"cpProtocolInfo": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"addresses": [
|
||||
"10.10.1.101"
|
||||
],
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
],
|
||||
"cpdId": "VDU2_CP2",
|
||||
"extLinkPortId": "c9008244-6561-49cf-a9a3-6218034e6b02",
|
||||
"id": "ef2c2ee9-6cdb-4d68-b091-b8a4babdced5"
|
||||
},
|
||||
{
|
||||
"associatedVnfcCpId": "30711c7a-f02b-4ae5-ac9f-eb61828e0f5e",
|
||||
"cpConfigId": "VDU2_CP1_1",
|
||||
"cpProtocolInfo": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"addresses": [
|
||||
"10.10.0.101"
|
||||
],
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
],
|
||||
"cpdId": "VDU2_CP1",
|
||||
"extLinkPortId": "c19db045-8526-4d2d-8daf-819905f9b3fb",
|
||||
"id": "96d97d70-c431-4a78-8072-42a974d525aa"
|
||||
},
|
||||
{
|
||||
"associatedVnfcCpId": "bdf62eb2-c2cb-4a11-84b7-eda2526c8d11",
|
||||
"cpConfigId": "VDU1_CP1_1",
|
||||
"cpProtocolInfo": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"isDynamic": true,
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
],
|
||||
"cpdId": "VDU1_CP1",
|
||||
"extLinkPortId": "51043a84-78f4-4bbe-832d-a7fcfbd3cb23",
|
||||
"id": "2c3a08c9-ab43-4bb8-a4b9-b1d9c2c6ff94"
|
||||
},
|
||||
{
|
||||
"associatedVnfcCpId": "1cb04dd2-3a28-4be5-8b87-74a21fbb62dc",
|
||||
"cpConfigId": "VDU1_CP2_1",
|
||||
"cpProtocolInfo": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"isDynamic": true,
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
],
|
||||
"cpdId": "VDU1_CP2",
|
||||
"extLinkPortId": "f190426f-63a7-42a5-ad12-44c6bc464f13",
|
||||
"id": "f8428c7d-2268-40f9-9bea-fa9539d118be"
|
||||
}
|
||||
],
|
||||
"extManagedVirtualLinkInfo": [
|
||||
{
|
||||
"id": "7a6fe192-c34b-4029-937d-f1a2e7a00f5a",
|
||||
"networkResource": {
|
||||
"resourceId": "11f8a056-0495-4ca6-8de9-94402604663f"
|
||||
},
|
||||
"vnfLinkPorts": [
|
||||
{
|
||||
"cpInstanceId": "1c55be13-988f-4499-a8e5-3a9f2d0d3913",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "b8b0430e-169c-442a-9c48-8fb8c4c3db4d",
|
||||
"resourceHandle": {
|
||||
"resourceId": "7fe18c76-85eb-4e90-ba95-df6e6bad2cd6",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
},
|
||||
{
|
||||
"cpInstanceId": "ab497ce5-b57e-48d1-8bc1-8f58eac6b45d",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "2950622a-ded8-4160-88dc-2bf0f02529dd",
|
||||
"resourceHandle": {
|
||||
"resourceId": "07dc4096-49c7-478d-986a-fd132efd573a",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
}
|
||||
],
|
||||
"vnfVirtualLinkDescId": "internalVL1"
|
||||
}
|
||||
],
|
||||
"extVirtualLinkInfo": [
|
||||
{
|
||||
"currentVnfExtCpData": [
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU1_CP1_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"numDynamicAddresses": 1,
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU1_CP1"
|
||||
},
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU2_CP1_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"fixedAddresses": [
|
||||
"10.10.0.101"
|
||||
],
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU2_CP1"
|
||||
}
|
||||
],
|
||||
"extLinkPorts": [
|
||||
{
|
||||
"cpInstanceId": "96d97d70-c431-4a78-8072-42a974d525aa",
|
||||
"id": "c19db045-8526-4d2d-8daf-819905f9b3fb",
|
||||
"resourceHandle": {
|
||||
"resourceId": "c1f49f87-37ff-437b-84a0-91a346fdec55",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
},
|
||||
{
|
||||
"cpInstanceId": "2c3a08c9-ab43-4bb8-a4b9-b1d9c2c6ff94",
|
||||
"id": "51043a84-78f4-4bbe-832d-a7fcfbd3cb23",
|
||||
"resourceHandle": {
|
||||
"resourceId": "88bc7eee-0893-4892-b0d3-d58d1c2293a8",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
}
|
||||
],
|
||||
"id": "b0b2f836-a275-4374-834e-ed336a563b1e",
|
||||
"resourceHandle": {
|
||||
"resourceId": "1948231e-bbf0-4ff9-a692-40f8d6d5c90d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"currentVnfExtCpData": [
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU1_CP2_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"numDynamicAddresses": 1,
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU1_CP2"
|
||||
},
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU2_CP2_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"fixedAddresses": [
|
||||
"10.10.1.101"
|
||||
],
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU2_CP2"
|
||||
}
|
||||
],
|
||||
"extLinkPorts": [
|
||||
{
|
||||
"cpInstanceId": "ef2c2ee9-6cdb-4d68-b091-b8a4babdced5",
|
||||
"id": "c9008244-6561-49cf-a9a3-6218034e6b02",
|
||||
"resourceHandle": {
|
||||
"resourceId": "3c89dfce-2039-41ad-a60b-6be6488bbca6",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
},
|
||||
{
|
||||
"cpInstanceId": "f8428c7d-2268-40f9-9bea-fa9539d118be",
|
||||
"id": "f190426f-63a7-42a5-ad12-44c6bc464f13",
|
||||
"resourceHandle": {
|
||||
"resourceId": "a0db5863-e420-4191-a2bb-c8536b091bda",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
}
|
||||
],
|
||||
"id": "6766a8d4-cad1-43f1-b0cb-ce0ef9267661",
|
||||
"resourceHandle": {
|
||||
"resourceId": "5af7e28a-e744-4b4f-a1a4-c7d0f7d93cd7"
|
||||
}
|
||||
}
|
||||
],
|
||||
"flavourId": "simple",
|
||||
"virtualStorageResourceInfo": [
|
||||
{
|
||||
"id": "0357ecab-bdd8-403f-a91b-b80f287b536f",
|
||||
"storageResource": {
|
||||
"resourceId": "0ea498c7-a740-4b16-b8fd-93dbd5d8ee7d",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Cinder::Volume"
|
||||
},
|
||||
"virtualStorageDescId": "VirtualStorage"
|
||||
}
|
||||
],
|
||||
"vnfState": "STARTED",
|
||||
"vnfVirtualLinkResourceInfo": [
|
||||
{
|
||||
"id": "e651053a-e17e-47e3-9665-6ec028873040",
|
||||
"networkResource": {
|
||||
"resourceId": "98d5c67b-c7f8-4293-890c-011184b6574b",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Net"
|
||||
},
|
||||
"vnfLinkPorts": [
|
||||
{
|
||||
"cpInstanceId": "b1cab6ba-c571-4fbf-80fd-f8e67b9fbf68",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "d5ec9027-dba4-4b53-be4a-7bbad1ab9f51",
|
||||
"resourceHandle": {
|
||||
"resourceId": "42fe1697-30a7-4a79-8547-71de0c43c8b5",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
},
|
||||
{
|
||||
"cpInstanceId": "f495eec3-1420-467c-b126-19abf8396e11",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "a5f21c6d-3ba4-4843-b3cc-cc4c8b37be72",
|
||||
"resourceHandle": {
|
||||
"resourceId": "5bd09199-1409-46b1-9cd4-191e3fb7c9cb",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
}
|
||||
],
|
||||
"vnfVirtualLinkDescId": "internalVL2"
|
||||
},
|
||||
{
|
||||
"id": "5efa5ab4-4237-4b41-9e39-7f4565992acc",
|
||||
"networkResource": {
|
||||
"resourceId": "be459310-e24d-4430-a0b9-b9ad391f4e5e",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Net"
|
||||
},
|
||||
"vnfLinkPorts": [
|
||||
{
|
||||
"cpInstanceId": "e8111f5b-a713-4f40-a64d-fab56d038487",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "c02a75f8-a809-49c6-b6dc-bbda31928ef0",
|
||||
"resourceHandle": {
|
||||
"resourceId": "86c5a181-4232-4937-ba73-5c494f0d267a",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
},
|
||||
{
|
||||
"cpInstanceId": "16686d29-8491-41f8-8f2c-6d091f83592f",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "bfb260e7-cfdd-45ee-8fb9-64f51d8c2064",
|
||||
"resourceHandle": {
|
||||
"resourceId": "de311602-f52b-44a7-af11-15b97ca28beb",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
}
|
||||
],
|
||||
"vnfVirtualLinkDescId": "internalVL3"
|
||||
}
|
||||
],
|
||||
"vnfcInfo": [
|
||||
{
|
||||
"id": "12e3f94b-8177-4621-8476-f9af72dddcaa",
|
||||
"vduId": "VDU2",
|
||||
"vnfcResourceInfoId": "d0c3f928-adca-4c9b-aaa3-1a8b43a9460d",
|
||||
"vnfcState": "STARTED"
|
||||
},
|
||||
{
|
||||
"id": "7ba99664-517a-45bd-b69c-7375018a2e2e",
|
||||
"vduId": "VDU1",
|
||||
"vnfcResourceInfoId": "60d4ffe7-275c-458d-9f40-0a7b43f895fd",
|
||||
"vnfcState": "STARTED"
|
||||
}
|
||||
],
|
||||
"vnfcResourceInfo": [
|
||||
{
|
||||
"computeResource": {
|
||||
"resourceId": "edda96a2-b4c2-48ca-a06f-31976f9d9653",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Nova::Server"
|
||||
},
|
||||
"id": "d0c3f928-adca-4c9b-aaa3-1a8b43a9460d",
|
||||
"vduId": "VDU2",
|
||||
"vnfcCpInfo": [
|
||||
{
|
||||
"cpdId": "VDU2_CP1",
|
||||
"id": "30711c7a-f02b-4ae5-ac9f-eb61828e0f5e",
|
||||
"vnfExtCpId": "96d97d70-c431-4a78-8072-42a974d525aa"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU2_CP2",
|
||||
"id": "f52ba062-48fc-4ff1-bad0-e3a5b29d50bd",
|
||||
"vnfExtCpId": "ef2c2ee9-6cdb-4d68-b091-b8a4babdced5"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU2_CP3",
|
||||
"id": "1c55be13-988f-4499-a8e5-3a9f2d0d3913",
|
||||
"vnfLinkPortId": "b8b0430e-169c-442a-9c48-8fb8c4c3db4d"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU2_CP4",
|
||||
"id": "b1cab6ba-c571-4fbf-80fd-f8e67b9fbf68",
|
||||
"vnfLinkPortId": "d5ec9027-dba4-4b53-be4a-7bbad1ab9f51"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU2_CP5",
|
||||
"id": "e8111f5b-a713-4f40-a64d-fab56d038487",
|
||||
"vnfLinkPortId": "c02a75f8-a809-49c6-b6dc-bbda31928ef0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"computeResource": {
|
||||
"resourceId": "66a84389-8234-4394-929f-68e0ea77fde1",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Nova::Server"
|
||||
},
|
||||
"id": "60d4ffe7-275c-458d-9f40-0a7b43f895fd",
|
||||
"storageResourceIds": [
|
||||
"0357ecab-bdd8-403f-a91b-b80f287b536f"
|
||||
],
|
||||
"vduId": "VDU1",
|
||||
"vnfcCpInfo": [
|
||||
{
|
||||
"cpdId": "VDU1_CP1",
|
||||
"id": "bdf62eb2-c2cb-4a11-84b7-eda2526c8d11",
|
||||
"vnfExtCpId": "2c3a08c9-ab43-4bb8-a4b9-b1d9c2c6ff94"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU1_CP2",
|
||||
"id": "1cb04dd2-3a28-4be5-8b87-74a21fbb62dc",
|
||||
"vnfExtCpId": "f8428c7d-2268-40f9-9bea-fa9539d118be"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU1_CP3",
|
||||
"id": "ab497ce5-b57e-48d1-8bc1-8f58eac6b45d",
|
||||
"vnfLinkPortId": "2950622a-ded8-4160-88dc-2bf0f02529dd"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU1_CP4",
|
||||
"id": "f495eec3-1420-467c-b126-19abf8396e11",
|
||||
"vnfLinkPortId": "a5f21c6d-3ba4-4843-b3cc-cc4c8b37be72"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU1_CP5",
|
||||
"id": "16686d29-8491-41f8-8f2c-6d091f83592f",
|
||||
"vnfLinkPortId": "bfb260e7-cfdd-45ee-8fb9-64f51d8c2064"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"instantiationState": "INSTANTIATED",
|
||||
"metadata": {},
|
||||
"vimConnectionInfo": {
|
||||
"vim1": {
|
||||
"accessInfo": {
|
||||
"project": "nfv",
|
||||
"projectDomain": "Default",
|
||||
"region": "RegionOne",
|
||||
"userDomain": "Default",
|
||||
"username": "nfv_user"
|
||||
},
|
||||
"interfaceInfo": {
|
||||
"endpoint": "http://localhost/identity/v3"
|
||||
},
|
||||
"vimId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3"
|
||||
}
|
||||
},
|
||||
"vnfConfigurableProperties": {},
|
||||
"vnfInstanceDescription": "test sample1",
|
||||
"vnfInstanceName": "sample1",
|
||||
"vnfProductName": "Sample VNF",
|
||||
"vnfProvider": "Company",
|
||||
"vnfSoftwareVersion": "1.0",
|
||||
"vnfdId": "da459819-a2eb-442b-b9a2-0c1c02466baf",
|
||||
"vnfdVersion": "1.0"
|
||||
}
|
||||
]
|
@ -0,0 +1,232 @@
|
||||
|
||||
[
|
||||
{
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5"
|
||||
},
|
||||
"vnfInstance": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/e00f0d64-d7a3-459b-8a51-b402d5344296"
|
||||
}
|
||||
},
|
||||
"id": "a790879c-05f9-4475-9c90-1677452d3eb5",
|
||||
"isAutomaticInvocation": false,
|
||||
"isCancelPending": false,
|
||||
"operation": "INSTANTIATE",
|
||||
"operationParams": {
|
||||
"extManagedVirtualLinks": [
|
||||
{
|
||||
"id": "7a6fe192-c34b-4029-937d-f1a2e7a00f5a",
|
||||
"resourceId": "11f8a056-0495-4ca6-8de9-94402604663f",
|
||||
"vnfVirtualLinkDescId": "internalVL1"
|
||||
}
|
||||
],
|
||||
"extVirtualLinks": [
|
||||
{
|
||||
"extCps": [
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU1_CP1_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"numDynamicAddresses": 1,
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU1_CP1"
|
||||
},
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU2_CP1_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"fixedAddresses": [
|
||||
"10.10.0.101"
|
||||
],
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU2_CP1"
|
||||
}
|
||||
],
|
||||
"id": "b0b2f836-a275-4374-834e-ed336a563b1e",
|
||||
"resourceId": "1948231e-bbf0-4ff9-a692-40f8d6d5c90d"
|
||||
},
|
||||
{
|
||||
"extCps": [
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU1_CP2_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"numDynamicAddresses": 1,
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU1_CP2"
|
||||
},
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU2_CP2_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"fixedAddresses": [
|
||||
"10.10.1.101"
|
||||
],
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU2_CP2"
|
||||
}
|
||||
],
|
||||
"id": "6766a8d4-cad1-43f1-b0cb-ce0ef9267661",
|
||||
"resourceId": "5af7e28a-e744-4b4f-a1a4-c7d0f7d93cd7"
|
||||
}
|
||||
],
|
||||
"flavourId": "simple",
|
||||
"instantiationLevelId": "instantiation_level_1",
|
||||
"vimConnectionInfo": {
|
||||
"vim1": {
|
||||
"accessInfo": {
|
||||
"password": "devstack",
|
||||
"project": "nfv",
|
||||
"projectDomain": "Default",
|
||||
"region": "RegionOne",
|
||||
"userDomain": "Default",
|
||||
"username": "nfv_user"
|
||||
},
|
||||
"interfaceInfo": {
|
||||
"endpoint": "http://localhost/identity/v3"
|
||||
},
|
||||
"vimId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operationState": "COMPLETED",
|
||||
"resourceChanges": {
|
||||
"affectedVirtualLinks": [
|
||||
{
|
||||
"changeType": "ADDED",
|
||||
"id": "74411165-b969-4539-99a9-3ffdbc8b1ae7",
|
||||
"networkResource": {
|
||||
"resourceId": "5f4cc2e3-7bce-4e90-ad1a-0d43812a4af5",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Net"
|
||||
},
|
||||
"vnfLinkPortIds": [
|
||||
"5cf5bba1-3481-4233-a42f-98284c91b6a4",
|
||||
"68f63717-9e01-4e4e-a3f4-c64e6e0f7a49"
|
||||
],
|
||||
"vnfVirtualLinkDescId": "internalVL2"
|
||||
},
|
||||
{
|
||||
"changeType": "ADDED",
|
||||
"id": "5b696739-1a38-4df2-8f95-f3826fc3b0b7",
|
||||
"networkResource": {
|
||||
"resourceId": "349a4dbb-41e9-4db9-b044-0653507b9728",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Net"
|
||||
},
|
||||
"vnfLinkPortIds": [
|
||||
"474caf76-c227-4b84-9aa8-bb9814488917",
|
||||
"9fe46983-9497-4377-a959-765734ef7871"
|
||||
],
|
||||
"vnfVirtualLinkDescId": "internalVL3"
|
||||
}
|
||||
],
|
||||
"affectedVirtualStorages": [
|
||||
{
|
||||
"changeType": "ADDED",
|
||||
"id": "359a20f2-2c66-49b4-bc4e-3cf673513688",
|
||||
"storageResource": {
|
||||
"resourceId": "496a70a0-c9df-43ce-8e49-3c708583eef0",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Cinder::Volume"
|
||||
},
|
||||
"virtualStorageDescId": "VirtualStorage"
|
||||
}
|
||||
],
|
||||
"affectedVnfcs": [
|
||||
{
|
||||
"affectedVnfcCpIds": [
|
||||
"e3ba03a1-f8a6-4468-ab97-0e24a8c5ad37",
|
||||
"e23bf017-6979-48a1-805b-ed459eb78071",
|
||||
"33a8397b-7f0c-4db7-85eb-8d8c19a35f9e",
|
||||
"7e9e3e7e-5ba5-4f12-ba1c-fa865719391f",
|
||||
"bf741bec-5294-4ae6-9486-51a1ebdb3ad7"
|
||||
],
|
||||
"changeType": "ADDED",
|
||||
"computeResource": {
|
||||
"resourceId": "7fceb009-ed81-4b95-ad4d-8487870cac48",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Nova::Server"
|
||||
},
|
||||
"id": "c4453bf6-d185-4d4f-9e6b-fb745bf21229",
|
||||
"vduId": "VDU2"
|
||||
},
|
||||
{
|
||||
"addedStorageResourceIds": [
|
||||
"359a20f2-2c66-49b4-bc4e-3cf673513688"
|
||||
],
|
||||
"affectedVnfcCpIds": [
|
||||
"5c0b46c4-3e08-4397-bbab-89bc196b5abd",
|
||||
"c3efc6e9-1abc-407c-8421-101730cd8204",
|
||||
"26847d0b-a64a-4c28-90db-25ed3d101741",
|
||||
"b1647921-08b2-4cfa-a553-ebf333e602e4",
|
||||
"29125d8c-d84e-4055-a76a-beed1912bca3"
|
||||
],
|
||||
"changeType": "ADDED",
|
||||
"computeResource": {
|
||||
"resourceId": "2f0f1954-0b5f-48a6-8591-f05ca2c3c74e",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Nova::Server"
|
||||
},
|
||||
"id": "795985f6-f2c1-4a32-b318-6ac424ddf2bf",
|
||||
"vduId": "VDU1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"startTime": "2021-09-06T07:07:15Z",
|
||||
"stateEnteredTime": "2021-09-06T07:07:15Z",
|
||||
"vnfInstanceId": "e00f0d64-d7a3-459b-8a51-b402d5344296"
|
||||
}
|
||||
]
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/subscriptions/cd87e3d6-9bbe-4ad1-bb21-0f5c3e4e777d"
|
||||
}
|
||||
},
|
||||
"callbackUri": "http://127.0.0.1/",
|
||||
"id": "cd87e3d6-9bbe-4ad1-bb21-0f5c3e4e777d",
|
||||
"verbosity": "FULL"
|
||||
}
|
471
api-ref/source/v2/samples/vnflcm/show-vnf-instance-response.json
Normal file
471
api-ref/source/v2/samples/vnflcm/show-vnf-instance-response.json
Normal file
@ -0,0 +1,471 @@
|
||||
{
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee"
|
||||
},
|
||||
"terminate": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/terminate"
|
||||
}
|
||||
},
|
||||
"extensions": {},
|
||||
"id": "99e2bae9-45d3-4ca1-83f4-34d44ca25bee",
|
||||
"instantiatedVnfInfo": {
|
||||
"extCpInfo": [
|
||||
{
|
||||
"associatedVnfcCpId": "f52ba062-48fc-4ff1-bad0-e3a5b29d50bd",
|
||||
"cpConfigId": "VDU2_CP2_1",
|
||||
"cpProtocolInfo": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"addresses": [
|
||||
"10.10.1.101"
|
||||
],
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
],
|
||||
"cpdId": "VDU2_CP2",
|
||||
"extLinkPortId": "c9008244-6561-49cf-a9a3-6218034e6b02",
|
||||
"id": "ef2c2ee9-6cdb-4d68-b091-b8a4babdced5"
|
||||
},
|
||||
{
|
||||
"associatedVnfcCpId": "30711c7a-f02b-4ae5-ac9f-eb61828e0f5e",
|
||||
"cpConfigId": "VDU2_CP1_1",
|
||||
"cpProtocolInfo": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"addresses": [
|
||||
"10.10.0.101"
|
||||
],
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
],
|
||||
"cpdId": "VDU2_CP1",
|
||||
"extLinkPortId": "c19db045-8526-4d2d-8daf-819905f9b3fb",
|
||||
"id": "96d97d70-c431-4a78-8072-42a974d525aa"
|
||||
},
|
||||
{
|
||||
"associatedVnfcCpId": "bdf62eb2-c2cb-4a11-84b7-eda2526c8d11",
|
||||
"cpConfigId": "VDU1_CP1_1",
|
||||
"cpProtocolInfo": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"isDynamic": true,
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
],
|
||||
"cpdId": "VDU1_CP1",
|
||||
"extLinkPortId": "51043a84-78f4-4bbe-832d-a7fcfbd3cb23",
|
||||
"id": "2c3a08c9-ab43-4bb8-a4b9-b1d9c2c6ff94"
|
||||
},
|
||||
{
|
||||
"associatedVnfcCpId": "1cb04dd2-3a28-4be5-8b87-74a21fbb62dc",
|
||||
"cpConfigId": "VDU1_CP2_1",
|
||||
"cpProtocolInfo": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"isDynamic": true,
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
],
|
||||
"cpdId": "VDU1_CP2",
|
||||
"extLinkPortId": "f190426f-63a7-42a5-ad12-44c6bc464f13",
|
||||
"id": "f8428c7d-2268-40f9-9bea-fa9539d118be"
|
||||
}
|
||||
],
|
||||
"extManagedVirtualLinkInfo": [
|
||||
{
|
||||
"id": "7a6fe192-c34b-4029-937d-f1a2e7a00f5a",
|
||||
"networkResource": {
|
||||
"resourceId": "11f8a056-0495-4ca6-8de9-94402604663f"
|
||||
},
|
||||
"vnfLinkPorts": [
|
||||
{
|
||||
"cpInstanceId": "1c55be13-988f-4499-a8e5-3a9f2d0d3913",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "b8b0430e-169c-442a-9c48-8fb8c4c3db4d",
|
||||
"resourceHandle": {
|
||||
"resourceId": "7fe18c76-85eb-4e90-ba95-df6e6bad2cd6",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
},
|
||||
{
|
||||
"cpInstanceId": "ab497ce5-b57e-48d1-8bc1-8f58eac6b45d",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "2950622a-ded8-4160-88dc-2bf0f02529dd",
|
||||
"resourceHandle": {
|
||||
"resourceId": "07dc4096-49c7-478d-986a-fd132efd573a",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
}
|
||||
],
|
||||
"vnfVirtualLinkDescId": "internalVL1"
|
||||
}
|
||||
],
|
||||
"extVirtualLinkInfo": [
|
||||
{
|
||||
"currentVnfExtCpData": [
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU1_CP1_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"numDynamicAddresses": 1,
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU1_CP1"
|
||||
},
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU2_CP1_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"fixedAddresses": [
|
||||
"10.10.0.101"
|
||||
],
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU2_CP1"
|
||||
}
|
||||
],
|
||||
"extLinkPorts": [
|
||||
{
|
||||
"cpInstanceId": "96d97d70-c431-4a78-8072-42a974d525aa",
|
||||
"id": "c19db045-8526-4d2d-8daf-819905f9b3fb",
|
||||
"resourceHandle": {
|
||||
"resourceId": "c1f49f87-37ff-437b-84a0-91a346fdec55",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
},
|
||||
{
|
||||
"cpInstanceId": "2c3a08c9-ab43-4bb8-a4b9-b1d9c2c6ff94",
|
||||
"id": "51043a84-78f4-4bbe-832d-a7fcfbd3cb23",
|
||||
"resourceHandle": {
|
||||
"resourceId": "88bc7eee-0893-4892-b0d3-d58d1c2293a8",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
}
|
||||
],
|
||||
"id": "b0b2f836-a275-4374-834e-ed336a563b1e",
|
||||
"resourceHandle": {
|
||||
"resourceId": "1948231e-bbf0-4ff9-a692-40f8d6d5c90d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"currentVnfExtCpData": [
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU1_CP2_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"numDynamicAddresses": 1,
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU1_CP2"
|
||||
},
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU2_CP2_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"fixedAddresses": [
|
||||
"10.10.1.101"
|
||||
],
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU2_CP2"
|
||||
}
|
||||
],
|
||||
"extLinkPorts": [
|
||||
{
|
||||
"cpInstanceId": "ef2c2ee9-6cdb-4d68-b091-b8a4babdced5",
|
||||
"id": "c9008244-6561-49cf-a9a3-6218034e6b02",
|
||||
"resourceHandle": {
|
||||
"resourceId": "3c89dfce-2039-41ad-a60b-6be6488bbca6",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
},
|
||||
{
|
||||
"cpInstanceId": "f8428c7d-2268-40f9-9bea-fa9539d118be",
|
||||
"id": "f190426f-63a7-42a5-ad12-44c6bc464f13",
|
||||
"resourceHandle": {
|
||||
"resourceId": "a0db5863-e420-4191-a2bb-c8536b091bda",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
}
|
||||
],
|
||||
"id": "6766a8d4-cad1-43f1-b0cb-ce0ef9267661",
|
||||
"resourceHandle": {
|
||||
"resourceId": "5af7e28a-e744-4b4f-a1a4-c7d0f7d93cd7"
|
||||
}
|
||||
}
|
||||
],
|
||||
"flavourId": "simple",
|
||||
"virtualStorageResourceInfo": [
|
||||
{
|
||||
"id": "0357ecab-bdd8-403f-a91b-b80f287b536f",
|
||||
"storageResource": {
|
||||
"resourceId": "0ea498c7-a740-4b16-b8fd-93dbd5d8ee7d",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Cinder::Volume"
|
||||
},
|
||||
"virtualStorageDescId": "VirtualStorage"
|
||||
}
|
||||
],
|
||||
"vnfState": "STARTED",
|
||||
"vnfVirtualLinkResourceInfo": [
|
||||
{
|
||||
"id": "e651053a-e17e-47e3-9665-6ec028873040",
|
||||
"networkResource": {
|
||||
"resourceId": "98d5c67b-c7f8-4293-890c-011184b6574b",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Net"
|
||||
},
|
||||
"vnfLinkPorts": [
|
||||
{
|
||||
"cpInstanceId": "b1cab6ba-c571-4fbf-80fd-f8e67b9fbf68",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "d5ec9027-dba4-4b53-be4a-7bbad1ab9f51",
|
||||
"resourceHandle": {
|
||||
"resourceId": "42fe1697-30a7-4a79-8547-71de0c43c8b5",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
},
|
||||
{
|
||||
"cpInstanceId": "f495eec3-1420-467c-b126-19abf8396e11",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "a5f21c6d-3ba4-4843-b3cc-cc4c8b37be72",
|
||||
"resourceHandle": {
|
||||
"resourceId": "5bd09199-1409-46b1-9cd4-191e3fb7c9cb",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
}
|
||||
],
|
||||
"vnfVirtualLinkDescId": "internalVL2"
|
||||
},
|
||||
{
|
||||
"id": "5efa5ab4-4237-4b41-9e39-7f4565992acc",
|
||||
"networkResource": {
|
||||
"resourceId": "be459310-e24d-4430-a0b9-b9ad391f4e5e",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Net"
|
||||
},
|
||||
"vnfLinkPorts": [
|
||||
{
|
||||
"cpInstanceId": "e8111f5b-a713-4f40-a64d-fab56d038487",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "c02a75f8-a809-49c6-b6dc-bbda31928ef0",
|
||||
"resourceHandle": {
|
||||
"resourceId": "86c5a181-4232-4937-ba73-5c494f0d267a",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
},
|
||||
{
|
||||
"cpInstanceId": "16686d29-8491-41f8-8f2c-6d091f83592f",
|
||||
"cpInstanceType": "VNFC_CP",
|
||||
"id": "bfb260e7-cfdd-45ee-8fb9-64f51d8c2064",
|
||||
"resourceHandle": {
|
||||
"resourceId": "de311602-f52b-44a7-af11-15b97ca28beb",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Port"
|
||||
}
|
||||
}
|
||||
],
|
||||
"vnfVirtualLinkDescId": "internalVL3"
|
||||
}
|
||||
],
|
||||
"vnfcInfo": [
|
||||
{
|
||||
"id": "12e3f94b-8177-4621-8476-f9af72dddcaa",
|
||||
"vduId": "VDU2",
|
||||
"vnfcResourceInfoId": "d0c3f928-adca-4c9b-aaa3-1a8b43a9460d",
|
||||
"vnfcState": "STARTED"
|
||||
},
|
||||
{
|
||||
"id": "7ba99664-517a-45bd-b69c-7375018a2e2e",
|
||||
"vduId": "VDU1",
|
||||
"vnfcResourceInfoId": "60d4ffe7-275c-458d-9f40-0a7b43f895fd",
|
||||
"vnfcState": "STARTED"
|
||||
}
|
||||
],
|
||||
"vnfcResourceInfo": [
|
||||
{
|
||||
"computeResource": {
|
||||
"resourceId": "edda96a2-b4c2-48ca-a06f-31976f9d9653",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Nova::Server"
|
||||
},
|
||||
"id": "d0c3f928-adca-4c9b-aaa3-1a8b43a9460d",
|
||||
"vduId": "VDU2",
|
||||
"vnfcCpInfo": [
|
||||
{
|
||||
"cpdId": "VDU2_CP1",
|
||||
"id": "30711c7a-f02b-4ae5-ac9f-eb61828e0f5e",
|
||||
"vnfExtCpId": "96d97d70-c431-4a78-8072-42a974d525aa"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU2_CP2",
|
||||
"id": "f52ba062-48fc-4ff1-bad0-e3a5b29d50bd",
|
||||
"vnfExtCpId": "ef2c2ee9-6cdb-4d68-b091-b8a4babdced5"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU2_CP3",
|
||||
"id": "1c55be13-988f-4499-a8e5-3a9f2d0d3913",
|
||||
"vnfLinkPortId": "b8b0430e-169c-442a-9c48-8fb8c4c3db4d"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU2_CP4",
|
||||
"id": "b1cab6ba-c571-4fbf-80fd-f8e67b9fbf68",
|
||||
"vnfLinkPortId": "d5ec9027-dba4-4b53-be4a-7bbad1ab9f51"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU2_CP5",
|
||||
"id": "e8111f5b-a713-4f40-a64d-fab56d038487",
|
||||
"vnfLinkPortId": "c02a75f8-a809-49c6-b6dc-bbda31928ef0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"computeResource": {
|
||||
"resourceId": "66a84389-8234-4394-929f-68e0ea77fde1",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Nova::Server"
|
||||
},
|
||||
"id": "60d4ffe7-275c-458d-9f40-0a7b43f895fd",
|
||||
"storageResourceIds": [
|
||||
"0357ecab-bdd8-403f-a91b-b80f287b536f"
|
||||
],
|
||||
"vduId": "VDU1",
|
||||
"vnfcCpInfo": [
|
||||
{
|
||||
"cpdId": "VDU1_CP1",
|
||||
"id": "bdf62eb2-c2cb-4a11-84b7-eda2526c8d11",
|
||||
"vnfExtCpId": "2c3a08c9-ab43-4bb8-a4b9-b1d9c2c6ff94"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU1_CP2",
|
||||
"id": "1cb04dd2-3a28-4be5-8b87-74a21fbb62dc",
|
||||
"vnfExtCpId": "f8428c7d-2268-40f9-9bea-fa9539d118be"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU1_CP3",
|
||||
"id": "ab497ce5-b57e-48d1-8bc1-8f58eac6b45d",
|
||||
"vnfLinkPortId": "2950622a-ded8-4160-88dc-2bf0f02529dd"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU1_CP4",
|
||||
"id": "f495eec3-1420-467c-b126-19abf8396e11",
|
||||
"vnfLinkPortId": "a5f21c6d-3ba4-4843-b3cc-cc4c8b37be72"
|
||||
},
|
||||
{
|
||||
"cpdId": "VDU1_CP5",
|
||||
"id": "16686d29-8491-41f8-8f2c-6d091f83592f",
|
||||
"vnfLinkPortId": "bfb260e7-cfdd-45ee-8fb9-64f51d8c2064"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"instantiationState": "INSTANTIATED",
|
||||
"metadata": {},
|
||||
"vimConnectionInfo": {
|
||||
"vim1": {
|
||||
"accessInfo": {
|
||||
"project": "nfv",
|
||||
"projectDomain": "Default",
|
||||
"region": "RegionOne",
|
||||
"userDomain": "Default",
|
||||
"username": "nfv_user"
|
||||
},
|
||||
"interfaceInfo": {
|
||||
"endpoint": "http://localhost/identity/v3"
|
||||
},
|
||||
"vimId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3"
|
||||
}
|
||||
},
|
||||
"vnfConfigurableProperties": {},
|
||||
"vnfInstanceDescription": "test sample1",
|
||||
"vnfInstanceName": "sample1",
|
||||
"vnfProductName": "Sample VNF",
|
||||
"vnfProvider": "Company",
|
||||
"vnfSoftwareVersion": "1.0",
|
||||
"vnfdId": "da459819-a2eb-442b-b9a2-0c1c02466baf",
|
||||
"vnfdVersion": "1.0"
|
||||
}
|
@ -0,0 +1,229 @@
|
||||
{
|
||||
"_links": {
|
||||
"self": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5"
|
||||
},
|
||||
"vnfInstance": {
|
||||
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/e00f0d64-d7a3-459b-8a51-b402d5344296"
|
||||
}
|
||||
},
|
||||
"id": "a790879c-05f9-4475-9c90-1677452d3eb5",
|
||||
"isAutomaticInvocation": false,
|
||||
"isCancelPending": false,
|
||||
"operation": "INSTANTIATE",
|
||||
"operationParams": {
|
||||
"extManagedVirtualLinks": [
|
||||
{
|
||||
"id": "7a6fe192-c34b-4029-937d-f1a2e7a00f5a",
|
||||
"resourceId": "11f8a056-0495-4ca6-8de9-94402604663f",
|
||||
"vnfVirtualLinkDescId": "internalVL1"
|
||||
}
|
||||
],
|
||||
"extVirtualLinks": [
|
||||
{
|
||||
"extCps": [
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU1_CP1_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"numDynamicAddresses": 1,
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU1_CP1"
|
||||
},
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU2_CP1_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"fixedAddresses": [
|
||||
"10.10.0.101"
|
||||
],
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU2_CP1"
|
||||
}
|
||||
],
|
||||
"id": "b0b2f836-a275-4374-834e-ed336a563b1e",
|
||||
"resourceId": "1948231e-bbf0-4ff9-a692-40f8d6d5c90d"
|
||||
},
|
||||
{
|
||||
"extCps": [
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU1_CP2_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"numDynamicAddresses": 1,
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU1_CP2"
|
||||
},
|
||||
{
|
||||
"cpConfig": {
|
||||
"VDU2_CP2_1": {
|
||||
"cpProtocolData": [
|
||||
{
|
||||
"ipOverEthernet": {
|
||||
"ipAddresses": [
|
||||
{
|
||||
"fixedAddresses": [
|
||||
"10.10.1.101"
|
||||
],
|
||||
"subnetId": "1d4877ea-b810-4093-95de-bee62b2363f1",
|
||||
"type": "IPV4"
|
||||
}
|
||||
]
|
||||
},
|
||||
"layerProtocol": "IP_OVER_ETHERNET"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"cpdId": "VDU2_CP2"
|
||||
}
|
||||
],
|
||||
"id": "6766a8d4-cad1-43f1-b0cb-ce0ef9267661",
|
||||
"resourceId": "5af7e28a-e744-4b4f-a1a4-c7d0f7d93cd7"
|
||||
}
|
||||
],
|
||||
"flavourId": "simple",
|
||||
"instantiationLevelId": "instantiation_level_1",
|
||||
"vimConnectionInfo": {
|
||||
"vim1": {
|
||||
"accessInfo": {
|
||||
"password": "devstack",
|
||||
"project": "nfv",
|
||||
"projectDomain": "Default",
|
||||
"region": "RegionOne",
|
||||
"userDomain": "Default",
|
||||
"username": "nfv_user"
|
||||
},
|
||||
"interfaceInfo": {
|
||||
"endpoint": "http://localhost/identity/v3"
|
||||
},
|
||||
"vimId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3"
|
||||
}
|
||||
}
|
||||
},
|
||||
"operationState": "COMPLETED",
|
||||
"resourceChanges": {
|
||||
"affectedVirtualLinks": [
|
||||
{
|
||||
"changeType": "ADDED",
|
||||
"id": "74411165-b969-4539-99a9-3ffdbc8b1ae7",
|
||||
"networkResource": {
|
||||
"resourceId": "5f4cc2e3-7bce-4e90-ad1a-0d43812a4af5",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Net"
|
||||
},
|
||||
"vnfLinkPortIds": [
|
||||
"5cf5bba1-3481-4233-a42f-98284c91b6a4",
|
||||
"68f63717-9e01-4e4e-a3f4-c64e6e0f7a49"
|
||||
],
|
||||
"vnfVirtualLinkDescId": "internalVL2"
|
||||
},
|
||||
{
|
||||
"changeType": "ADDED",
|
||||
"id": "5b696739-1a38-4df2-8f95-f3826fc3b0b7",
|
||||
"networkResource": {
|
||||
"resourceId": "349a4dbb-41e9-4db9-b044-0653507b9728",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Neutron::Net"
|
||||
},
|
||||
"vnfLinkPortIds": [
|
||||
"474caf76-c227-4b84-9aa8-bb9814488917",
|
||||
"9fe46983-9497-4377-a959-765734ef7871"
|
||||
],
|
||||
"vnfVirtualLinkDescId": "internalVL3"
|
||||
}
|
||||
],
|
||||
"affectedVirtualStorages": [
|
||||
{
|
||||
"changeType": "ADDED",
|
||||
"id": "359a20f2-2c66-49b4-bc4e-3cf673513688",
|
||||
"storageResource": {
|
||||
"resourceId": "496a70a0-c9df-43ce-8e49-3c708583eef0",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Cinder::Volume"
|
||||
},
|
||||
"virtualStorageDescId": "VirtualStorage"
|
||||
}
|
||||
],
|
||||
"affectedVnfcs": [
|
||||
{
|
||||
"affectedVnfcCpIds": [
|
||||
"e3ba03a1-f8a6-4468-ab97-0e24a8c5ad37",
|
||||
"e23bf017-6979-48a1-805b-ed459eb78071",
|
||||
"33a8397b-7f0c-4db7-85eb-8d8c19a35f9e",
|
||||
"7e9e3e7e-5ba5-4f12-ba1c-fa865719391f",
|
||||
"bf741bec-5294-4ae6-9486-51a1ebdb3ad7"
|
||||
],
|
||||
"changeType": "ADDED",
|
||||
"computeResource": {
|
||||
"resourceId": "7fceb009-ed81-4b95-ad4d-8487870cac48",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Nova::Server"
|
||||
},
|
||||
"id": "c4453bf6-d185-4d4f-9e6b-fb745bf21229",
|
||||
"vduId": "VDU2"
|
||||
},
|
||||
{
|
||||
"addedStorageResourceIds": [
|
||||
"359a20f2-2c66-49b4-bc4e-3cf673513688"
|
||||
],
|
||||
"affectedVnfcCpIds": [
|
||||
"5c0b46c4-3e08-4397-bbab-89bc196b5abd",
|
||||
"c3efc6e9-1abc-407c-8421-101730cd8204",
|
||||
"26847d0b-a64a-4c28-90db-25ed3d101741",
|
||||
"b1647921-08b2-4cfa-a553-ebf333e602e4",
|
||||
"29125d8c-d84e-4055-a76a-beed1912bca3"
|
||||
],
|
||||
"changeType": "ADDED",
|
||||
"computeResource": {
|
||||
"resourceId": "2f0f1954-0b5f-48a6-8591-f05ca2c3c74e",
|
||||
"vimConnectionId": "03e608b2-e7d4-44fa-bd84-74fb24be3ed5",
|
||||
"vimLevelResourceType": "OS::Nova::Server"
|
||||
},
|
||||
"id": "795985f6-f2c1-4a32-b318-6ac424ddf2bf",
|
||||
"vduId": "VDU1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"startTime": "2021-09-06T07:07:15Z",
|
||||
"stateEnteredTime": "2021-09-06T07:07:15Z",
|
||||
"vnfInstanceId": "e00f0d64-d7a3-459b-8a51-b402d5344296"
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
{
|
||||
"gracefulTerminationTimeout": 10,
|
||||
"terminationType": "GRACEFUL"
|
||||
}
|
88
api-ref/source/v2/status.yaml
Normal file
88
api-ref/source/v2/status.yaml
Normal file
@ -0,0 +1,88 @@
|
||||
#################
|
||||
# Success Codes #
|
||||
#################
|
||||
200:
|
||||
default: |
|
||||
Request was successful.
|
||||
201:
|
||||
default: |
|
||||
Resource was created and is ready to use.
|
||||
202:
|
||||
default: |
|
||||
Request was accepted for processing, but the processing has not been
|
||||
completed. A 'location' header is included in the response which contains
|
||||
a link to check the progress of the request.
|
||||
204:
|
||||
default: |
|
||||
The server has fulfilled the request by deleting the resource.
|
||||
206:
|
||||
default: |
|
||||
Partial Content, The server has fulfilled the partial GET request for the
|
||||
resource.
|
||||
300:
|
||||
default: |
|
||||
There are multiple choices for resources. The request has to be more
|
||||
specific to successfully retrieve one of these resources.
|
||||
302:
|
||||
default: |
|
||||
The response is about a redirection hint. The header of the response
|
||||
usually contains a 'location' value where requesters can check to track
|
||||
the real location of the resource.
|
||||
303:
|
||||
default: |
|
||||
The server is redirecting the user agent to a different resource, as indicated
|
||||
by a URI in the Location header field, which is intended to provide an indirect
|
||||
response to the original request.
|
||||
|
||||
#################
|
||||
# Error Codes #
|
||||
#################
|
||||
|
||||
400:
|
||||
default: |
|
||||
Some content in the request was invalid.
|
||||
resource_signal: |
|
||||
The target resource doesn't support receiving a signal.
|
||||
401:
|
||||
default: |
|
||||
User must authenticate before making a request.
|
||||
403:
|
||||
default: |
|
||||
Policy does not allow current user to do this operation.
|
||||
404:
|
||||
default: |
|
||||
The requested resource could not be found.
|
||||
405:
|
||||
default: |
|
||||
Method is not valid for this endpoint.
|
||||
406:
|
||||
default: |
|
||||
Not Acceptable, the requested resource is only capable of generating
|
||||
content not acceptable according to the 'Accept' headers sent in the
|
||||
request.
|
||||
409:
|
||||
default: |
|
||||
This operation conflicted with another operation on this resource.
|
||||
duplicate_zone: |
|
||||
There is already a zone with this name.
|
||||
416:
|
||||
default: |
|
||||
Requested Range Not Satisfiable, A server SHOULD return a response with
|
||||
this status code if a request included a Range request-header field,
|
||||
and none of the range-specifier values in this field overlap the current
|
||||
extent of the selected resource, and the request did not include an
|
||||
If-Range request-header field.
|
||||
422:
|
||||
default: |
|
||||
The content type of the payload body is supported and the payload body of a
|
||||
request contains syntactically correct data (e.g. well-formed JSON) but the data
|
||||
cannot be processed (e.g. because it fails validation against a schema).
|
||||
500:
|
||||
default: |
|
||||
Something went wrong inside the service. This should not happen usually.
|
||||
If it does happen, it means the server has experienced some serious
|
||||
problems.
|
||||
503:
|
||||
default: |
|
||||
Service is not available. This is mostly caused by service configuration
|
||||
errors which prevents the service from successful start up.
|
939
api-ref/source/v2/vnflcm.inc
Normal file
939
api-ref/source/v2/vnflcm.inc
Normal file
@ -0,0 +1,939 @@
|
||||
.. -*- rst -*-
|
||||
|
||||
=====================================================================
|
||||
Virtualized Network Function Lifecycle Management Interface (VNF LCM)
|
||||
=====================================================================
|
||||
|
||||
This interface manages the VNF lifecycle management operations of VNF instances.
|
||||
|
||||
This interface allows the NFVO to invoke VNF lifecycle management operations
|
||||
of VNF instances towards the VNFM.
|
||||
|
||||
.. note::
|
||||
TODO: Xena release does not support version 2 vnflcm APIs of
|
||||
scale vnf, heal vnf, change external vnf connectivity,
|
||||
rollback, retry and fail.
|
||||
The version 2 of these APIs will be supported in future releases.
|
||||
|
||||
Creates a new VNF instance resource (v2)
|
||||
========================================
|
||||
|
||||
.. rest_method:: POST /vnflcm/v2/vnf_instances
|
||||
|
||||
The POST method creates a new VNF instance resource.
|
||||
|
||||
As the result of successfully executing this method, a new Individual VNF
|
||||
instance resource shall have been created, and the value of the
|
||||
instantiationState attribute in the representation of that resource shall be
|
||||
NOT_INSTANTIATED.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 201
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 406
|
||||
- 422
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- vnfdId: vnf_instance_create_request_vnfd_id
|
||||
- vnfInstanceName: vnf_instance_create_request_name
|
||||
- vnfInstanceDescription: vnf_instance_create_request_description
|
||||
- metadata: vnf_instance_create_request_metadata
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/create-vnf-instance-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- id: vnf_instance_id_response
|
||||
- vnfInstanceName: vnf_instance_name
|
||||
- vnfInstanceDescription: vnf_instance_description
|
||||
- vnfdId: vnf_instance_vnfd_id
|
||||
- vnfProvider: vnf_instance_vnf_provider
|
||||
- vnfProductName: vnf_instance_vnf_product_name
|
||||
- vnfSoftwareVersion: vnf_instance_vnf_software_version
|
||||
- vnfdVersion: vnf_instance_vnfd_version
|
||||
- vnfConfigurableProperties: vnf_instance_vnf_configurable_properties
|
||||
- instantiationState: vnf_instance_instantiation_state
|
||||
- metadata: vnf_instance_metadata
|
||||
- extensions: vnf_instance_extensions
|
||||
- _links: vnf_instance_links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/create-vnf-instance-response.json
|
||||
:language: javascript
|
||||
|
||||
Instantiate a VNF instance (v2)
|
||||
===============================
|
||||
|
||||
.. rest_method:: POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/instantiate
|
||||
|
||||
The POST method instantiates a VNF instance.
|
||||
|
||||
Once the VNFM has successfully completed the underlying VNF LCM operation
|
||||
occurrence, it shall set the instantiationState attribute to the value
|
||||
INSTANTIATED and the vnfState attribute to the value STARTED in the
|
||||
representation of the Individual VNF instance resource.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 202
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 404
|
||||
- 406
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- vnfInstanceId: vnf_instance_id
|
||||
- flavourId: flavour_id
|
||||
- instantiationLevelId: instantiation_level_id
|
||||
- extVirtualLinks: ext_virtual_links
|
||||
- id: ext_virtual_links_id
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceProviderId: resource_provider_id
|
||||
- resourceId: ext_virtual_links_resource_id
|
||||
- extCps: ext_cps
|
||||
- cpdId: cpd_id
|
||||
- cpConfig: cp_config
|
||||
- parentCpConfigId: parent_cp_config_id
|
||||
- linkPortId: link_port_id
|
||||
- cpProtocolData: cp_protocol_data
|
||||
- layerProtocol: layer_protocol
|
||||
- ipOverEthernet: ip_over_ethernet
|
||||
- macAddress: mac_address
|
||||
- segmentationId: segmentation_id
|
||||
- ipAddresses: ip_addresses
|
||||
- type: ip_address_type
|
||||
- fixedAddresses: fixed_addresses
|
||||
- numDynamicAddresses: num_dynamic_addresses
|
||||
- addressRange: address_range
|
||||
- minAddress: min_address
|
||||
- maxAddress: max_address
|
||||
- subnetId: subnet_id
|
||||
- extLinkPorts: ext_link_ports
|
||||
- id: ext_link_port_id
|
||||
- resourceHandle: ext_link_port_resource_handle
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceProviderId: resource_provider_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- extManagedVirtualLinks: ext_managed_virtual_links
|
||||
- id: ext_managed_virtual_link_data_id
|
||||
- vnfVirtualLinkDescId: vnf_virtual_link_desc_id
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceProviderId: resource_provider_id
|
||||
- resourceId: ext_managed_virtual_link_data_resource_id
|
||||
- vnfLinkPort: ext_managed_virtual_link_data_vnf_link_port
|
||||
- vnfLinkPortId: vnf_link_port_id
|
||||
- resourceHandle: vnf_link_port_resource_handle
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceProviderId: resource_provider_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- extManagedMultisiteVirtualLinkId: ext_managed_multisite_virtual_link_id
|
||||
- vimConnectionInfo: vnf_instance_vim_connection_info
|
||||
- vimId: vim_connection_info_vim_id
|
||||
- vimType: vim_connection_info_vim_type
|
||||
- interfaceInfo: vim_connection_info_interface_info
|
||||
- accessInfo: vim_connection_info_access_info
|
||||
- extra: vim_connection_info_extra
|
||||
- localizationLanguage: localizataion_language
|
||||
- additionalParams: vnf_instance_additional_params
|
||||
- extensions: vnf_instance_extensions
|
||||
- vnfConfigurableProperties: vnf_instance_vnf_configurable_properties
|
||||
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/instantiate-vnf-instance-request.json
|
||||
:language: javascript
|
||||
|
||||
Terminate a VNF instance (v2)
|
||||
=============================
|
||||
|
||||
.. rest_method:: POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/terminate
|
||||
|
||||
This task resource represents the "Terminate VNF" operation. The client can
|
||||
use this resource to terminate a VNF instance.
|
||||
|
||||
The POST method terminates a VNF instance.
|
||||
|
||||
Once the VNFM has successfully completed the underlying VNF LCM operation
|
||||
occurrence, it shall set the instantiationState attribute in the
|
||||
representation of the Individual VNF instance resource to the value
|
||||
NOT_INSTANTIATED.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 202
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 404
|
||||
- 406
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- vnfInstanceId: vnf_instance_id
|
||||
- terminationType: termination_type
|
||||
- gracefulTerminationTimeout: graceful_termination_timeout
|
||||
- additionalParams: vnf_instance_terminate_request_additional_params
|
||||
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/terminate-vnf-instance-request.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Delete a VNF instance (v2)
|
||||
==========================
|
||||
|
||||
.. rest_method:: DELETE /vnflcm/v2/vnf_instances/{vnfInstanceId}
|
||||
|
||||
This method deletes an "Individual VNF instance" resource.
|
||||
|
||||
As the result of successfully executing this method, the
|
||||
"Individual VNF instance" resource shall not exist any longer.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 204
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
- 406
|
||||
- 409
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- vnfInstanceId: vnf_instance_id
|
||||
|
||||
Show VNF Instance (v2)
|
||||
======================
|
||||
|
||||
.. rest_method:: GET /vnflcm/v2/vnf_instances/{vnfInstanceId}
|
||||
|
||||
Show information of given individual VNF instance.
|
||||
|
||||
The GET method retrieves information about a VNF instance by reading
|
||||
an "Individual VNF instance" resource.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
- 406
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- vnfInstanceId: vnf_instance_id
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- id: vnf_instance_id
|
||||
- vnfInstanceName: vnf_instance_name
|
||||
- vnfInstanceDescription: vnf_instance_description
|
||||
- vnfdId: vnf_instance_vnfd_id
|
||||
- vnfProvider: vnf_instance_vnf_provider
|
||||
- vnfProductName: vnf_instance_vnf_product_name
|
||||
- vnfSoftwareVersion: vnf_instance_vnf_software_version
|
||||
- vnfdVersion: vnf_instance_vnfd_version
|
||||
- vnfConfigurableProperties: vnf_instance_vnf_configurable_properties
|
||||
- vimConnectionInfo: vnf_instance_vim_connection_info
|
||||
- vimId: vim_connection_info_vim_id
|
||||
- vimType: vim_connection_info_vim_type
|
||||
- interfaceInfo: vim_connection_info_interface_info
|
||||
- accessInfo: vim_connection_info_access_info
|
||||
- instantiationState: vnf_instance_instantiation_state
|
||||
- instantiatedVnfInfo: instantiated_vnf_info
|
||||
- flavourId: flavour_id_response
|
||||
- vnfState: vnf_state
|
||||
- extCpInfo: ext_cp_info
|
||||
- id: ext_cp_info_id
|
||||
- cpdId: ext_cp_info_cpd_id
|
||||
- cpConfigId: ext_cp_info_cp_config_id
|
||||
- cpProtocolInfo: ext_cp_info_cp_protocol_info
|
||||
- layerProtocol: layer_protocol_cp_info
|
||||
- ipOverEthernet: ip_over_ethernet_cp_info
|
||||
- ipAddresses: ip_addresses_cp_info
|
||||
- type: ip_address_type
|
||||
- addresses: fixed_addresses
|
||||
- subnetId: subnet_id
|
||||
- extLinkPortId: ext_cp_info_ext_link_port_id
|
||||
- associatedVnfcCpId: ext_cp_info_associated_vnfc_cp_id
|
||||
- extVirtualLinkInfo: ext_virtual_link_info
|
||||
- id: ext_virtual_link_info_id
|
||||
- resourceHandle: resource_handle
|
||||
- resourceId: resource_handle_resource_id
|
||||
- extLinkPorts: ext_virtual_link_info_ext_link_ports
|
||||
- id: ext_virtual_link_info_ext_link_ports_id
|
||||
- resourceHandle: resource_handle
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- cpInstanceId: ext_virtual_link_info_ext_link_ports_cp_instance_id
|
||||
- currentVnfExtCpData: current_vnf_ext_cp_data
|
||||
- cpdId: cpd_id
|
||||
- cpConfig: cp_config
|
||||
- cpProtocolData: cp_protocol_data
|
||||
- layerProtocol: layer_protocol
|
||||
- ipOverEthernet: ip_over_ethernet
|
||||
- ipAddresses: ip_addresses
|
||||
- type: ip_address_type
|
||||
- numDynamicAddresses: num_dynamic_addresses
|
||||
- extManagedVirtualLinkInfo: ext_managed_virtual_link_info
|
||||
- id: ext_managed_virtual_link_info_id
|
||||
- vnfVirtualLinkDescId: ext_managed_virtual_link_info_vnf_virtual_link_desc_id
|
||||
- networkResource: ext_managed_virtual_link_info_network_resource
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vnfLinkPorts: vnf_link_ports
|
||||
- id: vnf_link_port_id
|
||||
- resourceHandle: vnf_link_port_resource_handle
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- cpInstanceId: vnf_link_port_cp_instance_id
|
||||
- cpInstanceType: vnf_link_port_cp_instance_type
|
||||
- vnfcResourceInfo: vnfc_resource_info
|
||||
- id: vnfc_resource_info_id
|
||||
- vduId: vnfc_resource_info_vdu_id
|
||||
- computeResource: vnfc_resource_info_compute_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- vnfcCpInfo: vnfc_resource_info_vnfc_cp_info
|
||||
- id: vnfc_cp_info_id
|
||||
- cpdId: vnfc_cp_info_cpd_id
|
||||
- vnfExtCpId: vnfc_cp_info_vnf_ext_cp_id
|
||||
- vnfVirtualLinkResourceInfo: vnf_virtual_link_resource_info
|
||||
- id: vnf_virtual_link_resource_info_id
|
||||
- vnfVirtualLinkDescId: vnf_virtual_link_resource_info_vnf_virtual_link_desc_id
|
||||
- networkResource: vnf_virtual_link_resource_info_network_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- vnfLinkPorts: vnf_link_ports
|
||||
- id: vnf_link_port_id
|
||||
- resourceHandle: vnf_link_port_resource_handle
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- cpInstanceId: vnf_link_port_cp_instance_id
|
||||
- cpInstanceType: vnf_link_port_cp_instance_type
|
||||
- virtualStorageResourceInfo: virtual_storage_resource_info
|
||||
- id: virtual_storage_resource_info_id
|
||||
- virtualStorageDescId: virtual_storage_resource_info_virtual_storage_desc_id
|
||||
- storageResource: virtual_storage_resource_info_storage_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- metadata: vnf_instance_metadata
|
||||
- vnfcInfo: vnfc_info
|
||||
- id: vnfc_info_id
|
||||
- vduId: vnfc_info_vdu_id
|
||||
- vnfcResourceInfoId: vnfc_resource_info_id
|
||||
- vnfcState: vnfc_info_vnfc_state
|
||||
- _links: vnf_instance_links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/show-vnf-instance-response.json
|
||||
:language: javascript
|
||||
|
||||
List VNF Instance (v2)
|
||||
======================
|
||||
|
||||
.. rest_method:: GET /vnflcm/v2/vnf_instances
|
||||
|
||||
The GET method queries information about multiple VNF instances.
|
||||
It supports attribute-based filtering and
|
||||
attribute selectors defined in ETSI NFV SOL013 v3.4.1.
|
||||
The detail of attribute-based filtering is described in
|
||||
SOL013 v3.4.1 clause 5.2.
|
||||
|
||||
An attribute selector allows the API consumer to choose
|
||||
which attributes it wants to be contained in the response.
|
||||
*all_fields*, *fields*, *exclude_fields* and *exclude_default*
|
||||
can be set as query parameters.
|
||||
|
||||
The following attributes shall be excluded
|
||||
from the VnfInstance structure in the
|
||||
response body if this parameter is provided,
|
||||
or none of the parameters "all_fields",
|
||||
"fields", "exclude_fields", "exclude_default" are provided:
|
||||
- vnfConfigurableProperties
|
||||
- vimConnectionInfo
|
||||
- instantiatedVnfInfo
|
||||
- metadata
|
||||
- extensionsby default
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 406
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- id: vnf_instance_id
|
||||
- vnfInstanceName: vnf_instance_name
|
||||
- vnfInstanceDescription: vnf_instance_description
|
||||
- vnfdId: vnf_instance_vnfd_id
|
||||
- vnfProvider: vnf_instance_vnf_provider
|
||||
- vnfProductName: vnf_instance_vnf_product_name
|
||||
- vnfSoftwareVersion: vnf_instance_vnf_software_version
|
||||
- vnfdVersion: vnf_instance_vnfd_version
|
||||
- vnfConfigurableProperties: vnf_instance_vnf_configurable_properties
|
||||
- vimConnectionInfo: vnf_instance_vim_connection_info
|
||||
- vimId: vim_connection_info_vim_id
|
||||
- vimType: vim_connection_info_vim_type
|
||||
- interfaceInfo: vim_connection_info_interface_info
|
||||
- accessInfo: vim_connection_info_access_info
|
||||
- instantiationState: vnf_instance_instantiation_state
|
||||
- instantiatedVnfInfo: instantiated_vnf_info
|
||||
- flavourId: flavour_id_response
|
||||
- vnfState: vnf_state
|
||||
- extCpInfo: ext_cp_info
|
||||
- id: ext_cp_info_id
|
||||
- cpdId: ext_cp_info_cpd_id
|
||||
- cpConfigId: ext_cp_info_cp_config_id
|
||||
- cpProtocolInfo: ext_cp_info_cp_protocol_info
|
||||
- layerProtocol: layer_protocol_cp_info
|
||||
- ipOverEthernet: ip_over_ethernet_cp_info
|
||||
- ipAddresses: ip_addresses_cp_info
|
||||
- type: ip_address_type
|
||||
- addresses: fixed_addresses
|
||||
- subnetId: subnet_id
|
||||
- extLinkPortId: ext_cp_info_ext_link_port_id
|
||||
- associatedVnfcCpId: ext_cp_info_associated_vnfc_cp_id
|
||||
- extVirtualLinkInfo: ext_virtual_link_info
|
||||
- id: ext_virtual_link_info_id
|
||||
- resourceHandle: resource_handle
|
||||
- resourceId: resource_handle_resource_id
|
||||
- extLinkPorts: ext_virtual_link_info_ext_link_ports
|
||||
- id: ext_virtual_link_info_ext_link_ports_id
|
||||
- resourceHandle: resource_handle
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- cpInstanceId: ext_virtual_link_info_ext_link_ports_cp_instance_id
|
||||
- currentVnfExtCpData: current_vnf_ext_cp_data
|
||||
- cpdId: cpd_id
|
||||
- cpConfig: cp_config
|
||||
- cpProtocolData: cp_protocol_data
|
||||
- layerProtocol: layer_protocol
|
||||
- ipOverEthernet: ip_over_ethernet
|
||||
- ipAddresses: ip_addresses
|
||||
- type: ip_address_type
|
||||
- numDynamicAddresses: num_dynamic_addresses
|
||||
- extManagedVirtualLinkInfo: ext_managed_virtual_link_info
|
||||
- id: ext_managed_virtual_link_info_id
|
||||
- vnfVirtualLinkDescId: ext_managed_virtual_link_info_vnf_virtual_link_desc_id
|
||||
- networkResource: ext_managed_virtual_link_info_network_resource
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vnfLinkPorts: vnf_link_ports
|
||||
- id: vnf_link_port_id
|
||||
- resourceHandle: vnf_link_port_resource_handle
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- cpInstanceId: vnf_link_port_cp_instance_id
|
||||
- cpInstanceType: vnf_link_port_cp_instance_type
|
||||
- vnfcResourceInfo: vnfc_resource_info
|
||||
- id: vnfc_resource_info_id
|
||||
- vduId: vnfc_resource_info_vdu_id
|
||||
- computeResource: vnfc_resource_info_compute_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- vnfcCpInfo: vnfc_resource_info_vnfc_cp_info
|
||||
- id: vnfc_cp_info_id
|
||||
- cpdId: vnfc_cp_info_cpd_id
|
||||
- vnfExtCpId: vnfc_cp_info_vnf_ext_cp_id
|
||||
- vnfVirtualLinkResourceInfo: vnf_virtual_link_resource_info
|
||||
- id: vnf_virtual_link_resource_info_id
|
||||
- vnfVirtualLinkDescId: vnf_virtual_link_resource_info_vnf_virtual_link_desc_id
|
||||
- networkResource: vnf_virtual_link_resource_info_network_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- vnfLinkPorts: vnf_link_ports
|
||||
- id: vnf_link_port_id
|
||||
- resourceHandle: vnf_link_port_resource_handle
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- cpInstanceId: vnf_link_port_cp_instance_id
|
||||
- cpInstanceType: vnf_link_port_cp_instance_type
|
||||
- virtualStorageResourceInfo: virtual_storage_resource_info
|
||||
- id: virtual_storage_resource_info_id
|
||||
- virtualStorageDescId: virtual_storage_resource_info_virtual_storage_desc_id
|
||||
- storageResource: virtual_storage_resource_info_storage_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- metadata: vnf_instance_metadata
|
||||
- vnfcInfo: vnfc_info
|
||||
- id: vnfc_info_id
|
||||
- vduId: vnfc_info_vdu_id
|
||||
- vnfcResourceInfoId: vnfc_resource_info_id
|
||||
- vnfcState: vnfc_info_vnfc_state
|
||||
- _links: vnf_instance_links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/list-vnf-instance-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Show VNF LCM operation occurrence (v2)
|
||||
======================================
|
||||
|
||||
.. rest_method:: GET /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}
|
||||
|
||||
The client can use this method to retrieve status information about a VNF lifecycle management operation occurrence
|
||||
by reading an "Individual VNF LCM operation occurrence" resource.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
- 406
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- vnfLcmOpOccId: vnf_lcm_op_occ_id
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- id: vnf_lcm_op_occ_id_response
|
||||
- operationState: operation_state
|
||||
- stateEnteredTime: state_entered_time
|
||||
- startTime: start_time
|
||||
- vnfInstanceId: vnf_lcm_vnf_instance_id
|
||||
- operation: operation
|
||||
- isAutomaticInvocation: is_automatic_invocation
|
||||
- operationParams: operation_params
|
||||
- isCancelPending: is_cancel_pending
|
||||
- error: error
|
||||
- title: error_title
|
||||
- status: error_status
|
||||
- detail: error_detail
|
||||
- resourceChanges: resource_changes
|
||||
- affectedVnfcs: affected_vnfcs
|
||||
- id: affected_vnfcs_id
|
||||
- vduId: affected_vnfcs_vdu_id
|
||||
- changeType: affected_vnfcs_change_type
|
||||
- computeResource: vnfc_resource_info_compute_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- affectedVnfcCpIds: affected_vnfc_cp_ids
|
||||
- addedStorageResourceIds: added_storage_resource_ids
|
||||
- affectedVirtualLinks: affected_virtual_links
|
||||
- id: affected_virtual_links_id
|
||||
- vnfVirtualLinkDescId: vnf_virtual_link_resource_info_vnf_virtual_link_desc_id
|
||||
- changeType: affected_virtual_links_change_type
|
||||
- networkResource: vnf_virtual_link_resource_info_network_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- vnfLinkPortIds: vnf_link_port_ids
|
||||
- affectedVirtualStorages: affected_virtual_storages
|
||||
- id: affected_virtual_storages_id
|
||||
- virtualStorageDescId: affected_virtual_storages_virtual_storage_desc_id
|
||||
- changeType: affected_virtual_storages_change_type
|
||||
- storageResource: virtual_storage_resource_info_storage_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- _links: vnf_instance_links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/show-vnflcm-operation-occurrence-response.json
|
||||
:language: javascript
|
||||
|
||||
List VNF LCM operation occurrence (v2)
|
||||
======================================
|
||||
|
||||
.. rest_method:: GET /vnflcm/v2/vnf_lcm_op_occs
|
||||
|
||||
The API consumer can use this method to query status information about multiple VNF lifecycle management operation
|
||||
occurrences.
|
||||
|
||||
It supports attribute-based filtering and
|
||||
attribute selectors defined in ETSI NFV SOL013 v3.4.1.
|
||||
The detail of attribute-based filtering is described in
|
||||
SOL013 v3.4.1 clause 5.2.
|
||||
|
||||
An attribute selector allows the API consumer to choose
|
||||
which attributes it wants to be contained in the response.
|
||||
*all_fields*, *fields*, *exclude_fields* and *exclude_default*
|
||||
can be set as query parameters.
|
||||
|
||||
The following attributes shall be excluded from the VnfLcmOpOcc structure in the
|
||||
response body if this parameter is provided, or none of the parameters "all_fields,"
|
||||
"fields", "exclude_fields", "exclude_default" are provided:
|
||||
- operationParams
|
||||
- error
|
||||
- resourceChanges
|
||||
- changedInfo
|
||||
- changedExtConnectivity.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 406
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- id: vnf_lcm_op_occ_id_response
|
||||
- operationState: operation_state
|
||||
- stateEnteredTime: state_entered_time
|
||||
- startTime: start_time
|
||||
- vnfInstanceId: vnf_lcm_vnf_instance_id
|
||||
- operation: operation
|
||||
- isAutomaticInvocation: is_automatic_invocation
|
||||
- operationParams: operation_params
|
||||
- isCancelPending: is_cancel_pending
|
||||
- error: error
|
||||
- title: error_title
|
||||
- status: error_status
|
||||
- detail: error_detail
|
||||
- resourceChanges: resource_changes
|
||||
- affectedVnfcs: affected_vnfcs
|
||||
- id: affected_vnfcs_id
|
||||
- vduId: affected_vnfcs_vdu_id
|
||||
- changeType: affected_vnfcs_change_type
|
||||
- computeResource: vnfc_resource_info_compute_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- affectedVnfcCpIds: affected_vnfc_cp_ids
|
||||
- addedStorageResourceIds: added_storage_resource_ids
|
||||
- affectedVirtualLinks: affected_virtual_links
|
||||
- id: affected_virtual_links_id
|
||||
- vnfVirtualLinkDescId: vnf_virtual_link_resource_info_vnf_virtual_link_desc_id
|
||||
- changeType: affected_virtual_links_change_type
|
||||
- networkResource: vnf_virtual_link_resource_info_network_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- vnfLinkPortIds: vnf_link_port_ids
|
||||
- affectedVirtualStorages: affected_virtual_storages
|
||||
- id: affected_virtual_storages_id
|
||||
- virtualStorageDescId: affected_virtual_storages_virtual_storage_desc_id
|
||||
- changeType: affected_virtual_storages_change_type
|
||||
- storageResource: virtual_storage_resource_info_storage_resource
|
||||
- vimConnectionId: vim_connection_id
|
||||
- resourceId: resource_handle_resource_id
|
||||
- vimLevelResourceType: resource_handle_vim_level_resource_type
|
||||
- _links: vnf_instance_links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/list-vnflcm-operation-occurrence-response.json
|
||||
:language: javascript
|
||||
|
||||
|
||||
Create a new subscription (v2)
|
||||
==============================
|
||||
|
||||
.. rest_method:: POST /vnflcm/v2/subscriptions
|
||||
|
||||
The POST method creates a new subscription.
|
||||
|
||||
As the result of successfully executing this method, a new "Individual subscription" resource
|
||||
shall have been created. This method shall not trigger any notification.
|
||||
|
||||
Creation of two "Individual subscription" resources with the same callbackURI and the same filter can result in
|
||||
performance degradation and will provide duplicates of notifications to the NFVO, and might make sense only in very
|
||||
rare use cases. Consequently, the VNFM may either allow creating an "Individual subscription" resource if another
|
||||
Individual subscription resource with the same filter and callbackUri already exists (in which case it shall return the
|
||||
201 Created response code), or may decide to not create a duplicate "Individual subscription" resource (in which case
|
||||
it shall return a "303 See Other" response code referencing the existing "Individual subscription" resource with the same
|
||||
filter and callbackUri).
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 201
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 406
|
||||
- 422
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- filter: filter
|
||||
- vnfInstanceSubscriptionFilter: vnf_instance_subscription_filter
|
||||
- vnfdIds: vnfd_ids
|
||||
- vnfProductsFromProviders: vnf_products_from_providers
|
||||
- vnfProvider: vnf_provider
|
||||
- vnfProducts: vnf_products
|
||||
- vnfProductName: vnf_product_name
|
||||
- versions: vnf_product_versions
|
||||
- vnfSoftwareVersion: vnf_product_vnf_software_version
|
||||
- vnfdVersions: vnfd_versions
|
||||
- vnfInstanceIds: vnf_instance_ids
|
||||
- vnfInstanceName: vnf_instance_names
|
||||
- notificationTypes: filter_notification_types
|
||||
- operationTypes: filter_operation_types
|
||||
- operationStates: filter_operation_states
|
||||
- callbackUri : callback_uri
|
||||
- authentication: authentication
|
||||
- authType: authentication_auth_type
|
||||
- paramsBasic: authentication_params_basic
|
||||
- userName: authentication_params_basic_user_name
|
||||
- password: authentication_params_basic_password
|
||||
- paramsOauth2ClientCredentials: authentication_params_oauth2_client_credentials
|
||||
- clientId: authentication_params_oauth2_client_credentials_client_id
|
||||
- clientPassword: authentication_params_oauth2_client_credentials_client_password
|
||||
- tokenEndpoint: authentication_params_oauth2_client_credentials_token_endpoint
|
||||
- verbosity: vnf_subscription_create_request_verbosity
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/create-subscription-request.json
|
||||
:language: javascript
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- id: subscription_id_response
|
||||
- callbackUri: callback_uri
|
||||
- verbosity: verbosity
|
||||
- _links: vnf_instance_links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/create-subscription-response.json
|
||||
:language: javascript
|
||||
|
||||
Delete a subscription
|
||||
=========================
|
||||
|
||||
.. rest_method:: DELETE /vnflcm/v2/subscriptions/{subscriptionId}
|
||||
|
||||
The DELETE method terminates an individual subscription.
|
||||
|
||||
As the result of successfully executing this method, the "Individual subscription" resource shall not exist any longer.
|
||||
This means that no notifications for that subscription shall be sent to the formerly-subscribed API consumer.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 204
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
- 406
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- subscriptionId: subscription_id
|
||||
|
||||
Show subscription (v2)
|
||||
======================
|
||||
|
||||
.. rest_method:: GET /vnflcm/v2/subscriptions/{subscriptionId}
|
||||
|
||||
The GET method retrieves information about a subscription by reading an "Individual subscription" resource.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 401
|
||||
- 404
|
||||
- 406
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- subscriptionId: subscription_id
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- id: subscription_id_response
|
||||
- callbackUri: callback_uri
|
||||
- verbosity: verbosity
|
||||
- _links: vnf_instance_links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/show-subscription-response.json
|
||||
:language: javascript
|
||||
|
||||
List subscription (v2)
|
||||
======================
|
||||
|
||||
.. rest_method:: GET /vnflcm/v2/subscriptions
|
||||
|
||||
The GET method queries the list of active subscriptions of the functional block that invokes the method.
|
||||
It can be used e.g. for resynchronization after error situations.
|
||||
|
||||
It supports attribute-based filtering in ETSI NFV SOL013 v3.4.1.
|
||||
The detail of attribute-based filtering is described in
|
||||
SOL013 v3.4.1 clause 5.2.
|
||||
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 200
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 406
|
||||
|
||||
Response Parameters
|
||||
-------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- id: subscription_id_response
|
||||
- callbackUri: callback_uri
|
||||
- verbosity: verbosity
|
||||
- _links: vnf_instance_links
|
||||
|
||||
Response Example
|
||||
----------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/list-subscription-response.json
|
||||
:language: javascript
|
9
api-ref/source/v2/vnflcm.rst
Normal file
9
api-ref/source/v2/vnflcm.rst
Normal file
@ -0,0 +1,9 @@
|
||||
:tocdepth: 2
|
||||
|
||||
########################################################################
|
||||
Virtualized Network Function Lifecycle Management Interface (VNF LCM) v2
|
||||
########################################################################
|
||||
|
||||
.. rest_expand_all::
|
||||
|
||||
.. include:: vnflcm.inc
|
@ -17,6 +17,20 @@ A default VIM should be registered according to :doc:`cli-legacy-vim`.
|
||||
CLI Reference for VNF Lifecycle Management
|
||||
------------------------------------------
|
||||
|
||||
.. note::
|
||||
Commands call version 1 vnflcm APIs by default.
|
||||
You can call the specific version of vnflcm APIs
|
||||
by using the option **\-\-os-tacker-api-version**.
|
||||
Commands with **\-\-os-tacker-api-version 2** call version 2 vnflcm APIs.
|
||||
|
||||
.. note::
|
||||
Xena release does not support version 2 vnflcm APIs of
|
||||
scale vnf, heal vnf, change external vnf connectivity,
|
||||
rollback, retry and fail.
|
||||
The version 2 of these APIs will be supported in future releases.
|
||||
Also, in Xena release, version 2 vnflcm APIs of instantiate vnf
|
||||
and terminate vnf only support VNF, not CNF.
|
||||
CNF will be supported by version 2 vnflcm APIs in future releases.
|
||||
|
||||
1. Create VNF Identifier
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -695,4 +709,68 @@ Help:
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
|
||||
15. Show VNF LCM API versions
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm versions
|
||||
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm versions
|
||||
+-------------+--------------------------------------------------------------------------------------------+
|
||||
| Field | Value |
|
||||
+-------------+--------------------------------------------------------------------------------------------+
|
||||
| uriPrefix | /vnflcm |
|
||||
| apiVersions | [{'version': '1.3.0', 'isDeprecated': False}, {'version': '2.0.0', 'isDeprecated': False}] |
|
||||
+-------------+--------------------------------------------------------------------------------------------+
|
||||
|
||||
|
||||
.. note::
|
||||
The command with **\-\-major-version** narrows down the
|
||||
obtained major versions to show.
|
||||
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm versions --major-version 1
|
||||
+-------------+-----------------------------------------------+
|
||||
| Field | Value |
|
||||
+-------------+-----------------------------------------------+
|
||||
| uriPrefix | /vnflcm/v1 |
|
||||
| apiVersions | [{'version': '1.3.0', 'isDeprecated': False}] |
|
||||
+-------------+-----------------------------------------------+
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm versions --major-version 2
|
||||
+-------------+-----------------------------------------------+
|
||||
| Field | Value |
|
||||
+-------------+-----------------------------------------------+
|
||||
| uriPrefix | /vnflcm/v2 |
|
||||
| apiVersions | [{'version': '2.0.0', 'isDeprecated': False}] |
|
||||
+-------------+-----------------------------------------------+
|
||||
|
||||
|
||||
Help:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm versions --help
|
||||
usage: openstack vnflcm versions [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN]
|
||||
[--noindent] [--prefix PREFIX] [--max-width <integer>]
|
||||
[--fit-width] [--print-empty] [--major-version <major-version>]
|
||||
|
||||
Show VnfLcm Api versions
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
--major-version <major-version>
|
||||
Show only specify major version.
|
||||
|
||||
.. _About aspect id : https://docs.openstack.org/tacker/latest/user/etsi_vnf_scaling.html#how-to-identify-aspect-id
|
||||
|
@ -4,6 +4,12 @@ ETSI NFV-SOL VNF error-handling
|
||||
|
||||
This document describes how to error-handling VNF in Tacker.
|
||||
|
||||
.. note::
|
||||
Rollback and retry are NOT supported in version 2 vnflcm APIs in Xena yet.
|
||||
So, You should recover it by yourself instead if instantiation is failed via v2 API.
|
||||
The recovering process may include deleting a stack via HEAT API.
|
||||
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
|
@ -7,7 +7,7 @@ Tacker mainly consists of two resources:
|
||||
* Network Functions Virtualisation Orchestrator (NFVO)
|
||||
* Virtualised Network Function Manager (VNFM)
|
||||
|
||||
*VNFO* is functional block that manages the Network Service (NS) lifecycle and
|
||||
*NFVO* is functional block that manages the Network Service (NS) lifecycle and
|
||||
coordinates the management of NS lifecycle, VNF lifecycle (supported by the
|
||||
VNFM) and NFVI resources (supported by the VIM) to ensure an optimized
|
||||
allocation of the necessary resources and connectivity.
|
||||
@ -41,6 +41,16 @@ VNF, VNFD
|
||||
vnfd-sol001
|
||||
|
||||
|
||||
UserData
|
||||
""""""""
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
userdata_script
|
||||
|
||||
|
||||
|
||||
Legacy Tacker Resources
|
||||
-----------------------
|
||||
|
||||
|
309
doc/source/user/userdata_script.rst
Normal file
309
doc/source/user/userdata_script.rst
Normal file
@ -0,0 +1,309 @@
|
||||
============================
|
||||
UserData script (VNF LCM v2)
|
||||
============================
|
||||
|
||||
This document describes the requirements of userdata script
|
||||
how to make it for VNF LCM version 2.
|
||||
|
||||
Userdata script enables operators to flexibly customize VIM input parameter
|
||||
in LCM operations.
|
||||
|
||||
If you would like to know how to deploy VNF using userdata script,
|
||||
please check `ETSI NFV-SOL VNF Deployment as VM with LCM Operation User Data`_
|
||||
or like to know how to make VNF packages including userdata script,
|
||||
please check `VNF Package manual`_.
|
||||
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
Userdata script must be described according to the following rules.
|
||||
|
||||
Userdata class needs to be defined in userdata script file.
|
||||
Any file name and class name are acceptable.
|
||||
|
||||
.. note::
|
||||
The names of the file and class have to correspond to following
|
||||
request parameters of LCM API,
|
||||
"lcm-operation-user-data", "lcm-operation-user-data-class".
|
||||
|
||||
|
||||
userdata class must inherit "userdata_utils.AbstractUserData",
|
||||
then functions have to be implemented.
|
||||
|
||||
Since latest Tacker supports userdata script for only instantiating vnf,
|
||||
**def instantiate(req, inst, grant_req, grant, tmp_csar_dir)**
|
||||
only can be implemented.
|
||||
Followings are the requirement of **def instantiate()**
|
||||
|
||||
Input of instantiate()
|
||||
----------------------
|
||||
|
||||
The function can use the following input data.
|
||||
The details of data types are defined in ETSI NFV SOL documents.
|
||||
|
||||
- req: InstantiateVnfRequest
|
||||
- inst: VnfInstance
|
||||
- grant_req: GrantRequest
|
||||
- grant: Grants
|
||||
- tmp_csar_dir: the temporary path of csar expanded by Tacker.
|
||||
|
||||
|
||||
Output of instantiate()
|
||||
-----------------------
|
||||
|
||||
The function must return the following structure.
|
||||
Data are for stack create API in HEAT.
|
||||
The requirements of HEAT API are described in
|
||||
`reference of Orchestration Service API v1
|
||||
"POST /v1/{tenant_id}/stacks"`_
|
||||
|
||||
fields = {'template': value, 'parameters': value, 'files': value}
|
||||
|
||||
- template: Dump of top HOT file.
|
||||
- parameters: Input parameters for Heat API.
|
||||
- files: Dump of all nested HOT files in the package.
|
||||
|
||||
Following shows sample output.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
fields = {
|
||||
'template': yaml.safe_dump(top_hot),
|
||||
'parameters': {'nfv': nfv_dict},
|
||||
'files': {}
|
||||
}
|
||||
for key, value in hot_dict.get('files', {}).items():
|
||||
fields['files'][key] = yaml.safe_dump(value)
|
||||
|
||||
return fields
|
||||
|
||||
|
||||
Sample userdata script
|
||||
======================
|
||||
|
||||
If users do not specify the userdata in instantiate VNF request,
|
||||
the default process runs according to the following script.
|
||||
|
||||
The script can be used as a sample for making the original userdata script.
|
||||
It obtains HEAT input parameters such as
|
||||
*computeFlavourId*, *vcImageId*, *locationConstraints*,
|
||||
*network*, *subnet*, and *fixed_ips*
|
||||
from VNFD, parameters of Instantiate request and Grant.
|
||||
|
||||
.. literalinclude:: ../../../tacker/sol_refactored/infra_drivers/openstack/userdata_default.py
|
||||
:language: python
|
||||
|
||||
The following is sample Base HOT corresponding to above sample userdata script.
|
||||
|
||||
**top Base HOT**
|
||||
|
||||
.. literalinclude:: ../../../tacker/tests/functional/sol_v2/samples/sample1/contents/BaseHOT/simple/sample1.yaml
|
||||
:language: yaml
|
||||
|
||||
**nested Base HOT**
|
||||
|
||||
.. literalinclude:: ../../../tacker/tests/functional/sol_v2/samples/sample1/contents/BaseHOT/simple/nested/VDU1.yaml
|
||||
:language: yaml
|
||||
|
||||
|
||||
Utility functions for userdata class
|
||||
====================================
|
||||
|
||||
Tacker provides the following utility functions
|
||||
for the userdata script.
|
||||
Following functions can be called in userdata class.
|
||||
|
||||
|
||||
def get_vnfd(vnfd_id, csar_dir)
|
||||
-------------------------------
|
||||
|
||||
Get vnfd in yaml format.
|
||||
|
||||
**vnf_id**: vnfid
|
||||
, **csar_dir**: the path of csar.
|
||||
|
||||
It returns an instance of `**Vnfd** class`_.
|
||||
|
||||
|
||||
def init_nfv_dict(hot_template)
|
||||
-------------------------------
|
||||
|
||||
Find the parameter specified by **get_param** in the HOT template
|
||||
and get the dict of the nfv structure for the HEAT input parameter.
|
||||
|
||||
**hot_template**: HOT in yaml format.
|
||||
|
||||
It returns **the dict of nfv structure**.
|
||||
|
||||
|
||||
def get_param_flavor(vdu_name, req, vnfd, grant)
|
||||
------------------------------------------------
|
||||
|
||||
Get flavor of VDU. If Grant contains the flavor, it is returned.
|
||||
Otherwise, flavor is obtained from vnfd and returned.
|
||||
|
||||
**vdu_name**: the name of VDU
|
||||
, **req**: InstantiateVnfRequest
|
||||
, **vnfd**: vnfd
|
||||
, **grant**: Grants
|
||||
|
||||
It returns **vimFlavourId**
|
||||
|
||||
|
||||
def get_param_image(vdu_name, req, vnfd, grant)
|
||||
-----------------------------------------------
|
||||
|
||||
Get software image of VDU.
|
||||
If Grant contains the glance-imageId corresponding to the VDU, it is returned.
|
||||
Otherwise, name of software image is obtained from vnfd and returned.
|
||||
|
||||
**vdu_name**: the name of VDU
|
||||
, **req**: InstantiateVnfRequest
|
||||
, **vnfd**: vnfd
|
||||
, **grant**: Grants
|
||||
|
||||
It returns **image ID** or **image name**.
|
||||
|
||||
|
||||
def get_param_zone(vdu_name, grant_req, grant)
|
||||
----------------------------------------------
|
||||
|
||||
Get zone id of VDU.
|
||||
|
||||
**vdu_name**: the name of VDU
|
||||
, **req**: InstantiateVnfRequest
|
||||
, **vnfd**: vnfd
|
||||
, **grant**: Grants
|
||||
|
||||
It returns **zone id**.
|
||||
|
||||
|
||||
def _get_fixed_ips_from_extcp(extcp)
|
||||
------------------------------------
|
||||
|
||||
Get list of fixed address and subnet from extcp.
|
||||
**extcp** is instantiateVnfRequest > extVirtualLinks > extcps
|
||||
defined in `ETSI NFV SOL003`_.
|
||||
|
||||
It returns the list of fixed address and subnet.
|
||||
|
||||
|
||||
def get_param_network(cp_name, grant, req)
|
||||
------------------------------------------
|
||||
|
||||
Get network resourceId of CP.
|
||||
|
||||
**cp_name**: the name of CP
|
||||
, **grant**: Grants
|
||||
, **req**: InstantiateVnfRequest
|
||||
|
||||
It returns network resourceId.
|
||||
|
||||
|
||||
def get_param_fixed_ips(cp_name, grant, req)
|
||||
--------------------------------------------
|
||||
|
||||
Get fixed IP addresses of CP.
|
||||
|
||||
**cp_name**: the name of CP
|
||||
, **grant**: Grants
|
||||
, **req**: InstantiateVnfRequest
|
||||
|
||||
It returns fixed IP address of CP.
|
||||
|
||||
|
||||
def apply_ext_managed_vls(hot_dict, req, grant)
|
||||
-----------------------------------------------
|
||||
|
||||
Modify HOT to apply externally provided extmanaged
|
||||
internal virtual link (extmanagedVL).
|
||||
|
||||
ExtmanagedVL is created by VNFM when instantiating VNF
|
||||
or externally created and specified
|
||||
by Grants or InstantiateVnfRequest.
|
||||
Since one HOT can correspond to only one of the cases,
|
||||
this function modifies HOT for the former case to for the latter case.
|
||||
|
||||
The Following shows the sample HOT description.
|
||||
|
||||
- Input HOT
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
heat_template_version: 2013-05-23
|
||||
description: 'Simple Base HOT for Sample VNF'
|
||||
|
||||
resources:
|
||||
VDU1:
|
||||
type: OS::Nova::Server
|
||||
properties:
|
||||
flavor: { get_param: [ nfv, VDU, VDU2, computeFlavourId ] }
|
||||
image: { get_param: [ nfv, VDU, VDU2, vcImageId] }
|
||||
networks:
|
||||
- port:
|
||||
get_resource: VDU1_CP1
|
||||
|
||||
VDU1_CP1:
|
||||
type: OS::Neutron::Port
|
||||
properties:
|
||||
network: { get_resource: internalVL1 }
|
||||
|
||||
internalVL1:
|
||||
type: OS::Neutron::Net
|
||||
|
||||
outputs: {}
|
||||
|
||||
- Output HOT
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
heat_template_version: 2013-05-23
|
||||
description: 'Simple Base HOT for Sample VNF'
|
||||
|
||||
resources:
|
||||
VDU1:
|
||||
type: OS::Nova::Server
|
||||
properties:
|
||||
flavor: { get_param: [ nfv, VDU, VDU2, computeFlavourId ] }
|
||||
image: { get_param: [ nfv, VDU, VDU2, vcImageId] }
|
||||
networks:
|
||||
- port:
|
||||
get_resource: VDU1_CP1
|
||||
|
||||
|
||||
VDU1_CP1:
|
||||
type: OS::Neutron::Port
|
||||
properties:
|
||||
network: network_id
|
||||
|
||||
outputs: {}
|
||||
|
||||
|
||||
vnfd.get_base_hot(flavour_id)
|
||||
------------------------------
|
||||
|
||||
Get HOT dict.
|
||||
|
||||
**flavour_id**: flavour_id of vnf instance.
|
||||
|
||||
It returns HOT dict with the following structure.
|
||||
**dict = {'template':tophot, 'Files'{file 1:, file2:...}}**
|
||||
|
||||
|
||||
vnf_instance_utils.json_merge_patch(target, patch)
|
||||
---------------------------------------------------
|
||||
|
||||
Get the result of json_merge_patch (IETF RFC 7396).
|
||||
|
||||
**target**: merge target
|
||||
, **patch**: applied patch
|
||||
|
||||
It returns the result of json_merge_patch (IETF RFC 7396).
|
||||
|
||||
|
||||
.. _ETSI NFV-SOL VNF Deployment as VM with LCM Operation User Data: https://docs.openstack.org/tacker/latest/user/etsi_vnf_deployment_as_vm_with_user_data.html
|
||||
.. _VNF Package manual: https://docs.openstack.org/tacker/latest/user/vnf-package.html
|
||||
.. _reference of Orchestration Service API v1 "POST /v1/{tenant_id}/stacks": https://docs.openstack.org/api-ref/orchestration/v1/?expanded=create-stack-detail#create-stack
|
||||
.. _**Vnfd** class: ../../../tacker/sol_refactored/common/vnfd_utils.py
|
||||
.. _ETSI NFV SOL003: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf
|
@ -14,6 +14,10 @@ are available:
|
||||
* CSAR with TOSCA-Metadata directory
|
||||
* CSAR zip without TOSCA-Metadata directory
|
||||
|
||||
.. note:: VNF LCM API version 1 supports both structures.
|
||||
VNF LCM API version 2 supports only
|
||||
*CSAR with TOSCA-Metadata directory*.
|
||||
|
||||
.. note:: For more detailed definitions of CSAR, see section 16 in
|
||||
`TOSCA-Simple-Profile-YAML-v1.1`_.
|
||||
|
||||
@ -308,8 +312,13 @@ can be assigned.
|
||||
The trade-off between being able to write scripts freely and
|
||||
limiting operations is an issue for the future.
|
||||
|
||||
.. note:: User data script is incompatible between VNF LCM API version 1 and 2
|
||||
due to different requirements for them.
|
||||
|
||||
Example:
|
||||
The requirements of User data script for VNF LCM API version 2 is described
|
||||
in :doc:`./userdata_script`.
|
||||
|
||||
Following shows an example of user data script for VNF LCM API version 1.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@ -400,4 +409,4 @@ YAML file. The contents is exactly same as described in the previous section.
|
||||
.. _NFV-SOL004 v2.6.1 : https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/004/02.06.01_60/gs_NFV-SOL004v020601p.pdf
|
||||
.. _NFV-SOL005 v2.6.1 : https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.06.01_60/gs_NFV-SOL005v020601p.pdf
|
||||
.. _NFV-SOL014 v2.8.1 : https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/014/02.08.01_60/gs_NFV-SOL014v020801p.pdf
|
||||
|
||||
.. _UserData script (VNF LCM v2):
|
||||
|
Loading…
x
Reference in New Issue
Block a user