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 Service APIs
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
|
NFV Orchestration API v1.0
|
||||||
|
--------------------------
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
: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
|
:tocdepth: 2
|
||||||
|
|
||||||
##########################
|
#################
|
||||||
NFV Orchestration API v1.0
|
Legacy Tacker API
|
||||||
##########################
|
#################
|
||||||
|
|
||||||
.. rest_expand_all::
|
.. rest_expand_all::
|
||||||
|
|
||||||
|
@ -19,5 +19,3 @@ NFV Orchestration API v1.0
|
||||||
.. include:: classifiers.inc
|
.. include:: classifiers.inc
|
||||||
.. include:: nsds.inc
|
.. include:: nsds.inc
|
||||||
.. include:: nss.inc
|
.. include:: nss.inc
|
||||||
.. include:: vnf_packages.inc
|
|
||||||
.. include:: vnflcm.inc
|
|
|
@ -1341,7 +1341,7 @@ vnf_link_port_cp_instance_id:
|
||||||
instance.
|
instance.
|
||||||
|
|
||||||
The value refers to an "extCpInfo" item in the VnfInstance or a
|
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
|
in: body
|
||||||
required: false
|
required: false
|
||||||
type: string
|
type: string
|
||||||
|
|
|
@ -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:
|
409:
|
||||||
default: |
|
default: |
|
||||||
This operation conflicted with another operation on this resource.
|
This operation conflicted with another operation on this resource.
|
||||||
duplcate_zone: |
|
duplicate_zone: |
|
||||||
There is already a zone with this name.
|
There is already a zone with this name.
|
||||||
416:
|
416:
|
||||||
default: |
|
default: |
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
:tocdepth: 2
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
Virtualized Network Function Lifecycle Management Interface (VNF LCM)
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
.. rest_expand_all::
|
||||||
|
|
||||||
|
.. include:: vnflcm.inc
|
|
@ -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
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
:tocdepth: 2
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
Virtualized Network Function Lifecycle Management Versions (VNF LCM versions)
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
.. rest_expand_all::
|
||||||
|
|
||||||
|
.. include:: vnflcm_versions.inc
|
|
@ -0,0 +1,9 @@
|
||||||
|
:tocdepth: 2
|
||||||
|
|
||||||
|
####################################################
|
||||||
|
Virtualized Network Function Packages (VNF packages)
|
||||||
|
####################################################
|
||||||
|
|
||||||
|
.. rest_expand_all::
|
||||||
|
|
||||||
|
.. include:: vnf_packages.inc
|
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"
|
||||||
|
}
|
||||||
|
]
|
|
@ -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"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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.
|
|
@ -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
|
|
@ -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
|
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
|
1. Create VNF Identifier
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -695,4 +709,68 @@ Help:
|
||||||
optional arguments:
|
optional arguments:
|
||||||
-h, --help show this help message and exit
|
-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
|
.. _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.
|
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
|
Prerequisites
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ Tacker mainly consists of two resources:
|
||||||
* Network Functions Virtualisation Orchestrator (NFVO)
|
* Network Functions Virtualisation Orchestrator (NFVO)
|
||||||
* Virtualised Network Function Manager (VNFM)
|
* 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
|
coordinates the management of NS lifecycle, VNF lifecycle (supported by the
|
||||||
VNFM) and NFVI resources (supported by the VIM) to ensure an optimized
|
VNFM) and NFVI resources (supported by the VIM) to ensure an optimized
|
||||||
allocation of the necessary resources and connectivity.
|
allocation of the necessary resources and connectivity.
|
||||||
|
@ -41,6 +41,16 @@ VNF, VNFD
|
||||||
vnfd-sol001
|
vnfd-sol001
|
||||||
|
|
||||||
|
|
||||||
|
UserData
|
||||||
|
""""""""
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
userdata_script
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Legacy Tacker Resources
|
Legacy Tacker Resources
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
|
|
@ -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 with TOSCA-Metadata directory
|
||||||
* CSAR zip without 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
|
.. note:: For more detailed definitions of CSAR, see section 16 in
|
||||||
`TOSCA-Simple-Profile-YAML-v1.1`_.
|
`TOSCA-Simple-Profile-YAML-v1.1`_.
|
||||||
|
|
||||||
|
@ -308,8 +312,13 @@ can be assigned.
|
||||||
The trade-off between being able to write scripts freely and
|
The trade-off between being able to write scripts freely and
|
||||||
limiting operations is an issue for the future.
|
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
|
.. 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-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-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
|
.. _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…
Reference in New Issue