Merge "Add doc of Change Current VNF Package"
This commit is contained in:
commit
b22de1eb92
@ -287,6 +287,13 @@ cause:
|
||||
in: body
|
||||
required: false
|
||||
type: string
|
||||
change_current_vnf_package_additional_params:
|
||||
description: |
|
||||
Additional parameters passed by the NFVO as input to a process,
|
||||
specific to the VNF of which upgrade_type is selected.
|
||||
in: body
|
||||
required: false
|
||||
type: key value pairs
|
||||
change_ext_vnf_connectivity_additional_params:
|
||||
description: |
|
||||
Additional parameters passed by the NFVO as input to the process,
|
||||
@ -301,6 +308,13 @@ change_ext_vnf_connectivity_ext_virtual_links:
|
||||
in: body
|
||||
required: true
|
||||
type: array
|
||||
change_vnfpkg_vnfd_id:
|
||||
description: |
|
||||
Identifier of VNFD which defines the destination
|
||||
VNF Package for the change.
|
||||
in: body
|
||||
required: true
|
||||
type: string
|
||||
changed_ext_connectivity:
|
||||
description: |
|
||||
Information about changed external connectivity,
|
||||
@ -938,10 +952,14 @@ operation_params:
|
||||
|
||||
HEAL: HealVnfRequest
|
||||
|
||||
CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest
|
||||
|
||||
TERMINATE: TerminateVnfRequest
|
||||
|
||||
MODIFY_INFO: VnfInfoModificationRequest
|
||||
|
||||
CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest
|
||||
|
||||
This attribute shall be present if this data type is returned
|
||||
in a response to reading an individual resource, and may
|
||||
be present according to the chosen attribute selector
|
||||
|
35
api-ref/source/v2/samples/vnflcm/change-vnfpkg-request.json
Normal file
35
api-ref/source/v2/samples/vnflcm/change-vnfpkg-request.json
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"vnfdId": "c6595341-a5bb-8246-53c4-7aeb843d60c5",
|
||||
"additionalParams": {
|
||||
"upgrade_type": "RollingUpdate",
|
||||
"lcm-operation-coordinate-old-vnf": "./Scripts/coordinate_old_vnf.py",
|
||||
"lcm-operation-coordinate-old-vnf-class": "CoordinateOldVnf",
|
||||
"lcm-operation-coordinate-new-vnf": "./Scripts/coordinate_new_vnf.py",
|
||||
"lcm-operation-coordinate-new-vnf-class": "CoordinateNewVnf",
|
||||
"vdu_params": [{
|
||||
"vdu_id": "VDU1",
|
||||
"old_vnfc_param": {
|
||||
"cp_name": "VDU1_CP1",
|
||||
"username": "ubuntu",
|
||||
"password": "ubuntu"
|
||||
},
|
||||
"new_vnfc_param": {
|
||||
"cp_name": "VDU1_CP1",
|
||||
"username": "ubuntu",
|
||||
"password": "ubuntu"
|
||||
}
|
||||
}, {
|
||||
"vdu_id": "VDU2",
|
||||
"old_vnfc_param": {
|
||||
"cp_name": "VDU2_CP1",
|
||||
"username": "ubuntu",
|
||||
"password": "ubuntu"
|
||||
},
|
||||
"new_vnfc_param": {
|
||||
"cp_name": "VDU2_CP1",
|
||||
"username": "ubuntu",
|
||||
"password": "ubuntu"
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
@ -782,6 +782,47 @@ Request Example
|
||||
.. literalinclude:: samples/vnflcm/change-ext-conn-request.json
|
||||
:language: javascript
|
||||
|
||||
Change Current VNF Package (v2)
|
||||
===============================
|
||||
|
||||
.. rest_method:: POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/change_vnfpkg
|
||||
|
||||
This task resource represents the "Change Current VNF Package" operation.
|
||||
The client can use this resource to change current vnf package of a VNF instance.
|
||||
|
||||
The POST method changes current vnf package of a VNF instance.
|
||||
|
||||
Response Codes
|
||||
--------------
|
||||
|
||||
.. rest_status_code:: success status.yaml
|
||||
|
||||
- 202
|
||||
|
||||
.. rest_status_code:: error status.yaml
|
||||
|
||||
- 400
|
||||
- 401
|
||||
- 404
|
||||
- 406
|
||||
- 409
|
||||
- 422
|
||||
|
||||
Request Parameters
|
||||
------------------
|
||||
|
||||
.. rest_parameters:: parameters_vnflcm.yaml
|
||||
|
||||
- vnfInstanceId: vnf_instance_id
|
||||
- vnfdId: change_vnfpkg_vnfd_id
|
||||
- additionalParams: change_current_vnf_package_additional_params
|
||||
|
||||
Request Example
|
||||
---------------
|
||||
|
||||
.. literalinclude:: samples/vnflcm/change-vnfpkg-request.json
|
||||
:language: javascript
|
||||
|
||||
Show VNF LCM operation occurrence (v2)
|
||||
======================================
|
||||
|
||||
|
BIN
doc/source/_images/etsi_cnf_change_current_vnf_package.png
Normal file
BIN
doc/source/_images/etsi_cnf_change_current_vnf_package.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
35
doc/source/_images/etsi_cnf_change_current_vnf_package.pu
Normal file
35
doc/source/_images/etsi_cnf_change_current_vnf_package.pu
Normal file
@ -0,0 +1,35 @@
|
||||
@startuml
|
||||
|
||||
frame "python-tackerclient" {
|
||||
component "tacker-client" as client
|
||||
}
|
||||
|
||||
frame "tacker" {
|
||||
component "tacker-server" {
|
||||
component "server" as serv
|
||||
}
|
||||
component "tacker-conductor" {
|
||||
component "conductor" as cond
|
||||
component "Kubernetes\ninfra-driver" as infra
|
||||
}
|
||||
}
|
||||
|
||||
node "Kubernetes\nCluster\n(Master)" as k8s_m
|
||||
cloud "Hardware Resources" as hw {
|
||||
node "Kubernetes\nCluster\n(Worker)" as k8s_w {
|
||||
node "Deployment" as ins1
|
||||
node "Deployment" as ins2
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
'# Relationships
|
||||
client --> serv: 1. Request \n Change Current VNF Package
|
||||
serv --> cond
|
||||
cond --> infra
|
||||
infra -right-> k8s_m: 2. Call Kubernetes\n API
|
||||
k8s_m --> ins1: 3. Change the image of Container \n defined in the manifest file of Deployment
|
||||
k8s_m --> ins2
|
||||
ins1 -[hidden]right-> ins2
|
||||
|
||||
@enduml
|
BIN
doc/source/_images/etsi_vnf_change_current_vnf_package.png
Normal file
BIN
doc/source/_images/etsi_vnf_change_current_vnf_package.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
33
doc/source/_images/etsi_vnf_change_current_vnf_package.pu
Normal file
33
doc/source/_images/etsi_vnf_change_current_vnf_package.pu
Normal file
@ -0,0 +1,33 @@
|
||||
@startuml
|
||||
|
||||
frame "python-tackerclient" {
|
||||
component "tacker-client" as client
|
||||
}
|
||||
|
||||
frame "tacker" {
|
||||
component "tacker-server" {
|
||||
component "server" as serv
|
||||
}
|
||||
component "tacker-conductor" {
|
||||
component "conductor" as cond
|
||||
component "OpenStack\ninfra-driver" as infra
|
||||
}
|
||||
}
|
||||
|
||||
node "OpenStack\nHeat" as heat
|
||||
cloud "Hardware Resources" as hw {
|
||||
node "VM" as ins1
|
||||
node "VM" as ins2
|
||||
}
|
||||
|
||||
|
||||
'# Relationships
|
||||
client --> serv: 1. Request \n Change Current VNF Package
|
||||
serv --> cond
|
||||
cond --> infra
|
||||
infra -right-> heat: 2. Call OpenStack\n Heat API
|
||||
heat --> ins1: 3. Change the image of VMs
|
||||
heat --> ins2
|
||||
ins1 -[hidden]right-> ins2
|
||||
|
||||
@enduml
|
@ -25,9 +25,18 @@ CLI Reference for VNF Lifecycle Management
|
||||
|
||||
.. note::
|
||||
In Yoga release, version 2 vnflcm APIs of instantiate vnf,
|
||||
terminate vnf, scale vnf, heal vnf, change external vnf connectivity,
|
||||
rollback, retry and fail only support VNF, not CNF. CNF will be supported
|
||||
by version 2 vnflcm APIs in future releases.
|
||||
terminate vnf, change current vnf package and fail both support VNF and
|
||||
CNF. Version 2 vnflcm APIs of scale vnf, heal vnf and
|
||||
change external vnf connectivity only support VNF, not CNF. Rollback and
|
||||
retry with all lifecycle only support VNF, rollback change current vnf
|
||||
package support CNF, and retry change current vnf package and retry
|
||||
terminate support CNF. Other operation by version 2 vnflcm APIs
|
||||
will support CNF in future releases.
|
||||
|
||||
.. note::
|
||||
Change current vnf package only support version 2 vnflcm APIs. In Yoga
|
||||
release, it only support ``RollingUpdate`` upgrade type, ``BlueGreen``
|
||||
will be supported in future releases.
|
||||
|
||||
1. Create VNF Identifier
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -420,7 +429,7 @@ Help:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm change-ext-conn VNF_INSTANCE_ID \
|
||||
$ openstack vnflcm change_ext_conn VNF_INSTANCE_ID \
|
||||
./sample_param_file.json
|
||||
|
||||
|
||||
@ -435,20 +444,53 @@ Help:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm change-ext-conn --help
|
||||
usage: openstack vnflcm change-ext-conn [-h] <vnf-instance> <param-file>
|
||||
$ openstack vnflcm change_ext_conn --help
|
||||
usage: openstack vnflcm change_ext_conn [-h] <vnf-instance> <param-file>
|
||||
|
||||
Change External VNF Connectivity
|
||||
|
||||
positional arguments:
|
||||
<vnf-instance> VNF instance ID to Change External VNF Connectivity
|
||||
<param-file> Specify change-ext-conn request parameters in a json file.
|
||||
<param-file> Specify change_ext_conn request parameters in a json file.
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
|
||||
11. Rollback VNF Lifecycle Management Operation
|
||||
11. Change Current VNF Package
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm change-vnfpkg VNF_INSTANCE_ID \
|
||||
./sample_param_file.json --os-tacker-api-version 2
|
||||
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Change Current VNF Package for VNF Instance 725f625e-f6b7-4bcd-b1b7-7184039fde45 has been accepted.
|
||||
|
||||
|
||||
Help:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm change-vnfpkg --os-tacker-api-version 2 --help
|
||||
usage: openstack vnflcm change-vnfpkg [-h] <vnf-instance> <param-file>
|
||||
|
||||
Change Current VNF Package
|
||||
|
||||
positional arguments:
|
||||
<vnf-instance> VNF instance ID to Change Current VNF Package
|
||||
<param-file> Specify change-vnfpkg request parameters in a json file.
|
||||
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit.
|
||||
|
||||
|
||||
12. Rollback VNF Lifecycle Management Operation
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed.
|
||||
@ -479,7 +521,7 @@ Help:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
|
||||
12. Retry
|
||||
13. Retry
|
||||
^^^^^^^^^
|
||||
|
||||
The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed.
|
||||
@ -512,7 +554,7 @@ Help:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
|
||||
13. Fail
|
||||
14. Fail
|
||||
^^^^^^^^
|
||||
|
||||
The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed.
|
||||
@ -640,7 +682,7 @@ Help:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
|
||||
14. List LCM Operation Occurrences
|
||||
15. List LCM Operation Occurrences
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: console
|
||||
@ -687,7 +729,7 @@ Help:
|
||||
tacker server will throw bad request error
|
||||
|
||||
|
||||
15. Show LCM Operation Occurrence
|
||||
16. Show LCM Operation Occurrence
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: console
|
||||
@ -751,7 +793,7 @@ Help:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
|
||||
16. Show VNF LCM API versions
|
||||
17. Show VNF LCM API versions
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: console
|
||||
|
602
doc/source/user/etsi_cnf_change_current_vnf_package.rst
Normal file
602
doc/source/user/etsi_cnf_change_current_vnf_package.rst
Normal file
@ -0,0 +1,602 @@
|
||||
===========================================
|
||||
ETSI NFV-SOL CNF Change Current VNF Package
|
||||
===========================================
|
||||
|
||||
This document describes how to change current VNF package for CNF in Tacker.
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The diagram below shows an overview of changing current VNF package.
|
||||
|
||||
1. Request Change Current VNF Package
|
||||
|
||||
A user requests tacker-server to change current VNF package for VNF instance
|
||||
with tacker-client by requesting ``change current vnf package``.
|
||||
|
||||
2. Call Kubernetes API
|
||||
|
||||
Upon receiving a request from tacker-client, tacker-server redirects it to
|
||||
tacker-conductor. In tacker-conductor, the request is redirected again to
|
||||
an appropriate infra-driver (in this case Kubernetes infra-driver) according
|
||||
to the contents of VNF instance. Then, Kubernetes infra-driver calls
|
||||
Kubernetes APIs.
|
||||
|
||||
3. Change the image of Container defined in the manifest file of Deployment
|
||||
|
||||
Kubernetes Master update the image of Container defined in the manifest
|
||||
file of Deployment according to the API calls.
|
||||
|
||||
.. figure:: ../_images/etsi_cnf_change_current_vnf_package.png
|
||||
:align: left
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
The following packages should be installed:
|
||||
|
||||
* tacker
|
||||
* python-tackerclient
|
||||
|
||||
At least one VNF instance with status of ``INSTANTIATED`` is required.
|
||||
You can refer to :doc:`./etsi_containerized_vnf_usage_guide` for the
|
||||
procedure to instantiate VNF.
|
||||
|
||||
You can also refer to :doc:`./vnf-package` for the operation of uploading
|
||||
VNF package.
|
||||
|
||||
The sample packages for CNF can be obtained from the following links.
|
||||
|
||||
* `VNF Package for Common instantiate`_
|
||||
* `VNF Package for Change Current VNF Package`_
|
||||
|
||||
|
||||
Change Current VNF Package
|
||||
--------------------------
|
||||
|
||||
As mentioned in Prerequisites, the VNF must be created
|
||||
before performing change current VNF package.
|
||||
|
||||
You need to upload the VNF package you want to change to before
|
||||
executing change current vnf package.
|
||||
|
||||
Details of CLI commands are described in
|
||||
:doc:`../cli/cli-etsi-vnflcm`.
|
||||
|
||||
For changing current VNF package, you need to prepare a JSON-formatted
|
||||
definition file before running command for changing the VNF package.
|
||||
|
||||
``sample_param_file_for_specified_resources.json:``
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"vnfdId": "c6595341-a5bb-8246-53c4-7aeb843d60c5",
|
||||
"additionalParams": {
|
||||
"upgrade_type": "RollingUpdate",
|
||||
"lcm-operation-coordinate-old-vnf": "./Scripts/coordinate_old_vnf.py",
|
||||
"lcm-operation-coordinate-old-vnf-class": "CoordinateOldVnf",
|
||||
"lcm-operation-coordinate-new-vnf": "./Scripts/coordinate_new_vnf.py",
|
||||
"lcm-operation-coordinate-new-vnf-class": "CoordinateNewVnf",
|
||||
"lcm-kubernetes-def-files": ["Files/new_kubernetes/new_deployment.yaml"],
|
||||
"vdu_params": [{
|
||||
"vdu_id": "VDU1"
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
||||
``sample_param_file_without_specified_resources.json:``
|
||||
|
||||
.. code-block:: json
|
||||
|
||||
{
|
||||
"vnfdId": "c6595341-a5bb-8246-53c4-7aeb843d60c5",
|
||||
"additionalParams": {
|
||||
"upgrade_type": "RollingUpdate",
|
||||
"lcm-operation-coordinate-old-vnf": "./Scripts/coordinate_old_vnf.py",
|
||||
"lcm-operation-coordinate-old-vnf-class": "CoordinateOldVnf",
|
||||
"lcm-operation-coordinate-new-vnf": "./Scripts/coordinate_new_vnf.py",
|
||||
"lcm-operation-coordinate-new-vnf-class": "CoordinateNewVnf"
|
||||
}
|
||||
}
|
||||
|
||||
You can set following parameter in additionalParams:
|
||||
|
||||
.. list-table:: additionalParams
|
||||
:widths: 15 10 30
|
||||
:header-rows: 1
|
||||
|
||||
* - Attribute name
|
||||
- Cardinality
|
||||
- Parameter description
|
||||
* - upgrade_type
|
||||
- 1
|
||||
- Type of file update operation method. Specify Blue-Green or Rolling update.
|
||||
* - lcm-operation-coordinate-old-vnf
|
||||
- 1
|
||||
- The file path of the script that simulates the behavior of CoordinateVNF for old VNF.
|
||||
* - lcm-operation-coordinate-old-vnf-class
|
||||
- 1
|
||||
- The class name of CoordinateVNF for old VNF.
|
||||
* - lcm-operation-coordinate-new-vnf
|
||||
- 1
|
||||
- The file path of the script that simulates the behavior of CoordinateVNF for new VNF.
|
||||
* - lcm-operation-coordinate-new-vnf-class
|
||||
- 1
|
||||
- The class name of CoordinateVNF for new VNF.
|
||||
* - vdu_params
|
||||
- 0..N
|
||||
- VDU information of target VDU to update. Specifying a vdu_params is required for OpenStack VIM and not required for Kubernetes VIM.
|
||||
* - > vdu_id
|
||||
- 1
|
||||
- VDU name of target VDU to update.
|
||||
* - > old_vnfc_param
|
||||
- 0..1
|
||||
- Old VNFC connection information. Required for ssh connection in CoordinateVNF operation for application configuration to VNFC.
|
||||
* - >> cp-name
|
||||
- 1
|
||||
- Connection point name of old VNFC to update.
|
||||
* - >> username
|
||||
- 1
|
||||
- User name of old VNFC to update.
|
||||
* - >> password
|
||||
- 1
|
||||
- Password of old VNFC to update.
|
||||
* - > new_vnfc_param
|
||||
- 0..1
|
||||
- New VNFC connection information. Required for ssh connection in CoordinateVNF operation for application configuration to VNFC.
|
||||
* - >> cp-name
|
||||
- 1
|
||||
- Connection point name of new VNFC to update.
|
||||
* - >> username
|
||||
- 1
|
||||
- User name of new VNFC to update.
|
||||
* - >> password
|
||||
- 1
|
||||
- Password of new VNFC to update.
|
||||
* - external_lb_param
|
||||
- 0..1
|
||||
- Load balancer information that requires configuration changes. Required only for the Blue-Green deployment process of OpenStack VIM.
|
||||
* - > ip_address
|
||||
- 1
|
||||
- IP address of load balancer server.
|
||||
* - > username
|
||||
- 1
|
||||
- User name of load balancer server.
|
||||
* - > password
|
||||
- 1
|
||||
- Password of load balancer server.
|
||||
|
||||
.. note:: ``sample_param_file_for_specified_resources.json`` contains
|
||||
all optional parameters.
|
||||
|
||||
* ``vnfdId`` is the vnfd id of the new VNF package you uploaded.
|
||||
* ``lcm-kubernetes-def-files`` is only used in Kubernetes VIM, not
|
||||
OpenStack VIM. And you only need to set this parameter when you need to
|
||||
update the path of the manifest file of the deployment resource.
|
||||
* ``vdu_params`` is VDU information of target VDU to update.
|
||||
Specifying a ``vdu_params`` is required for OpenStack VIM and not
|
||||
required for Kubernetes VIM.
|
||||
* ``lcm-operation-coordinate-old-vnf`` and
|
||||
``lcm-operation-coordinate-new-vnf`` are unique implementations of Tacker
|
||||
to simulate the coordination interface in `ETSI SOL002 v3.5.1`_. Mainly a
|
||||
script that can communicate with the VM after the VM is created, perform
|
||||
special customization of the VM or confirm the status of the VM.
|
||||
|
||||
.. note:: Currently, this operation only supports some functions of
|
||||
``Change Current VNF Package``.
|
||||
|
||||
* There are several ways to update deployment, but Yoga version Tacker only
|
||||
supports ``RollingUpdate`` type. You can set it via ``upgrade_type``
|
||||
param.
|
||||
|
||||
* Currently only support update images of deployment.
|
||||
|
||||
* Currently unsupported updates:
|
||||
|
||||
* This API currently does not support increasing or decreasing the number
|
||||
of Pods according to the VNF package.
|
||||
* The add and delete operations of the entire deployment are not
|
||||
supported.
|
||||
* In the definition of ETSI, external networks (e.g. extVirtualLinks,
|
||||
extManagedVirtualLinks) can be modified. This API currently does not
|
||||
support the operations of modifying, adding, and deleting these
|
||||
networks.
|
||||
|
||||
|
||||
How to Change Current VNF Package with specified resource
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You can update only specific kubernetes resources (e.g. deployment) by
|
||||
specifying the file path of the kubernetes definition file in the
|
||||
``lcm-kubernetes-def-files`` and vdu information in ``vdu_params``
|
||||
of the ``change current VNF package`` request parameter file
|
||||
(e.g. sample_param_file_for_specified_resources.json).
|
||||
|
||||
Execute Change Current VNF Package CLI command. After complete this change
|
||||
operation you should check resource status by Kubernetes CLI commands.
|
||||
|
||||
1. check deployment's image information. This is to confirm that deployment's
|
||||
image has changed before and after operation.
|
||||
|
||||
2. check the age of deployment and pods under this deployment. This is to
|
||||
confirm that the deployment has not redeployed before and after operation,
|
||||
and the pods under this deployment have redeployed.
|
||||
|
||||
3. check the status and name of pods under this deployment. This is to confirm
|
||||
that the status of pods under this deployment are running, the name of pods
|
||||
under this deployment has changed before and after operation.
|
||||
|
||||
Deployment information before operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl get deployment -o wide -n curry
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
|
||||
vdu2 2/2 2 2 20s nginx nginx app=webserver
|
||||
|
||||
Deployment detailed information before operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl describe deployment vdu2 -n curry
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Name: vdu2
|
||||
Namespace: curry
|
||||
CreationTimestamp: Tue, 22 Mar 2022 03:04:03 +0000
|
||||
Labels: <none>
|
||||
Annotations: deployment.kubernetes.io/revision: 1
|
||||
Selector: app=webserver
|
||||
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
|
||||
StrategyType: RollingUpdate
|
||||
MinReadySeconds: 0
|
||||
RollingUpdateStrategy: 25% max unavailable, 25% max surge
|
||||
Pod Template:
|
||||
Labels: app=webserver
|
||||
Containers:
|
||||
nginx:
|
||||
Image: nginx
|
||||
Port: 80/TCP
|
||||
Host Port: 0/TCP
|
||||
Limits:
|
||||
memory: 200Mi
|
||||
Requests:
|
||||
memory: 100Mi
|
||||
Environment: <none>
|
||||
Mounts: <none>
|
||||
Volumes: <none>
|
||||
Conditions:
|
||||
Type Status Reason
|
||||
---- ------ ------
|
||||
Available True MinimumReplicasAvailable
|
||||
Progressing True NewReplicaSetAvailable
|
||||
OldReplicaSets: <none>
|
||||
NewReplicaSet: vdu2-674d7d8766 (2/2 replicas created)
|
||||
Events:
|
||||
Type Reason Age From Message
|
||||
---- ------ ---- ---- -------
|
||||
Normal ScalingReplicaSet 37s deployment-controller Scaled up replica set vdu2-674d7d8766 to 2
|
||||
|
||||
Pods information before operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl get pods -o wide -n curry
|
||||
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
|
||||
vdu2-674d7d8766-8mcb6 1/1 Running 0 72s 10.233.96.15 node2 <none> <none>
|
||||
vdu2-674d7d8766-tmlhd 1/1 Running 0 72s 10.233.96.14 node2 <none> <none
|
||||
|
||||
Change Current VNF Package execution of the entire VNF:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm change-vnfpkg VNF_INSTANCE_ID \
|
||||
./sample_param_file_for_specified_resources.json \
|
||||
--os-tacker-api-version 2
|
||||
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Change Current VNF Package for VNF Instance f9bb1ad5-2e30-4074-86d9-3da3a636601a has been accepted.
|
||||
|
||||
Deployment information after operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl get deployment -o wide -n curry
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
|
||||
vdu2 2/2 2 2 6m23s nginx nginx:alpine app=webserver
|
||||
|
||||
Deployment detailed information after operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl describe deployment vdu2 -n curry
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Name: vdu2
|
||||
Namespace: curry
|
||||
CreationTimestamp: Tue, 22 Mar 2022 03:04:03 +0000
|
||||
Labels: <none>
|
||||
Annotations: deployment.kubernetes.io/revision: 2
|
||||
Selector: app=webserver
|
||||
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
|
||||
StrategyType: RollingUpdate
|
||||
MinReadySeconds: 0
|
||||
RollingUpdateStrategy: 25% max unavailable, 25% max surge
|
||||
Pod Template:
|
||||
Labels: app=webserver
|
||||
Containers:
|
||||
nginx:
|
||||
Image: nginx:alpine
|
||||
Port: 80/TCP
|
||||
Host Port: 0/TCP
|
||||
Limits:
|
||||
memory: 200Mi
|
||||
Requests:
|
||||
memory: 100Mi
|
||||
Environment: <none>
|
||||
Mounts: <none>
|
||||
Volumes: <none>
|
||||
Conditions:
|
||||
Type Status Reason
|
||||
---- ------ ------
|
||||
Available True MinimumReplicasAvailable
|
||||
Progressing True NewReplicaSetAvailable
|
||||
OldReplicaSets: <none>
|
||||
NewReplicaSet: vdu2-6696c74f5c (2/2 replicas created)
|
||||
Events:
|
||||
Type Reason Age From Message
|
||||
---- ------ ---- ---- -------
|
||||
Normal ScalingReplicaSet 6m46s deployment-controller Scaled up replica set vdu2-674d7d8766 to 2
|
||||
Normal ScalingReplicaSet 78s deployment-controller Scaled up replica set vdu2-6696c74f5c to 1
|
||||
Normal ScalingReplicaSet 67s deployment-controller Scaled down replica set vdu2-674d7d8766 to 1
|
||||
Normal ScalingReplicaSet 67s deployment-controller Scaled up replica set vdu2-6696c74f5c to 2
|
||||
Normal ScalingReplicaSet 55s deployment-controller Scaled down replica set vdu2-674d7d8766 to 0
|
||||
|
||||
.. note:: ``image`` has changed from ``nginx`` to ``nginx:alpine``.
|
||||
The age of deployment ``vdu2`` has not been reset, so deployment ``vdu2``
|
||||
has not redeployed.
|
||||
|
||||
Pods information after operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl get pods -o wide -n curry
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
|
||||
vdu2-6696c74f5c-9xwvv 1/1 Running 0 114s 10.233.96.17 node2 <none> <none>
|
||||
vdu2-6696c74f5c-kgtjt 1/1 Running 0 2m5s 10.233.96.16 node2 <none> <none>
|
||||
|
||||
.. note:: ``name`` of pods has changed before and after operation.
|
||||
The age of pods under deployment has been reset, so pods under
|
||||
this deployment has redeployed before and after operation.
|
||||
|
||||
How to Change Current VNF Package without specified resource
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
We can update all kubernetes deployment resources by not
|
||||
specifying the file path of the kubernetes definition file in the
|
||||
``lcm-kubernetes-def-files`` and vdu information in ``vdu_params``
|
||||
of the ``change current VNF package`` request parameter file
|
||||
(e.g. sample_param_file_without_specified_resources.json).
|
||||
|
||||
Execute Change Current VNF Package CLI command. After complete this change
|
||||
operation you should check resource status by Kubernetes CLI commands.
|
||||
|
||||
1. check all deployments' image information. This is to confirm that
|
||||
all deployments' images have changed before and after operation.
|
||||
|
||||
2. check the ages of deployments and pods under each deployment. This is to
|
||||
confirm that the deployments have not redeployed before and after operation,
|
||||
and the pods under each deployment have redeployed.
|
||||
|
||||
3. check the status and name of pods under this deployment. This is to confirm
|
||||
that the status of pods under deployments are running, the names of pods
|
||||
under deployments have changed before and after operation.
|
||||
|
||||
Deployments information before operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl get deployment -o wide
|
||||
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
|
||||
vdu2 2/2 2 2 14s nginx nginx app=webserver
|
||||
|
||||
Deployment detailed information before operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl describe deployment vdu2
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Name: vdu2
|
||||
Namespace: default
|
||||
CreationTimestamp: Tue, 22 Mar 2022 05:38:12 +0000
|
||||
Labels: <none>
|
||||
Annotations: deployment.kubernetes.io/revision: 1
|
||||
Selector: app=webserver
|
||||
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
|
||||
StrategyType: RollingUpdate
|
||||
MinReadySeconds: 0
|
||||
RollingUpdateStrategy: 25% max unavailable, 25% max surge
|
||||
Pod Template:
|
||||
Labels: app=webserver
|
||||
Containers:
|
||||
nginx:
|
||||
Image: nginx
|
||||
Port: 80/TCP
|
||||
Host Port: 0/TCP
|
||||
Limits:
|
||||
memory: 200Mi
|
||||
Requests:
|
||||
memory: 100Mi
|
||||
Environment: <none>
|
||||
Mounts: <none>
|
||||
Volumes: <none>
|
||||
Conditions:
|
||||
Type Status Reason
|
||||
---- ------ ------
|
||||
Available True MinimumReplicasAvailable
|
||||
Progressing True NewReplicaSetAvailable
|
||||
OldReplicaSets: <none>
|
||||
NewReplicaSet: vdu2-674d7d8766 (2/2 replicas created)
|
||||
Events:
|
||||
Type Reason Age From Message
|
||||
---- ------ ---- ---- -------
|
||||
Normal ScalingReplicaSet 73s deployment-controller Scaled up replica set vdu2-674d7d8766 to 2
|
||||
|
||||
Pods information before operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl get pods -o wide
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
|
||||
vdu2-674d7d8766-9bbnp 1/1 Running 0 2m13s 10.233.96.19 node2 <none> <none>
|
||||
vdu2-674d7d8766-r9wz5 1/1 Running 0 2m13s 10.233.96.18 node2 <none> <none>
|
||||
|
||||
Change Current VNF Package execution of the entire VNF:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack vnflcm change-vnfpkg VNF_INSTANCE_ID \
|
||||
./sample_param_file_without_specified_resources.json \
|
||||
--os-tacker-api-version 2
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Change Current VNF Package for VNF Instance 51dc9635-aaf0-4acf-b069-86017a39e2f4 has been accepted.
|
||||
|
||||
Deployments information after operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl get deployment -o wide
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
|
||||
vdu2 2/2 2 2 19m nginx nginx:alpine app=webserver
|
||||
|
||||
Deployment detailed information after operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl describe deployment vdu2
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
Name: vdu2
|
||||
Namespace: default
|
||||
CreationTimestamp: Tue, 22 Mar 2022 05:38:12 +0000
|
||||
Labels: <none>
|
||||
Annotations: deployment.kubernetes.io/revision: 2
|
||||
Selector: app=webserver
|
||||
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
|
||||
StrategyType: RollingUpdate
|
||||
MinReadySeconds: 0
|
||||
RollingUpdateStrategy: 25% max unavailable, 25% max surge
|
||||
Pod Template:
|
||||
Labels: app=webserver
|
||||
Containers:
|
||||
nginx:
|
||||
Image: nginx:alpine
|
||||
Port: 80/TCP
|
||||
Host Port: 0/TCP
|
||||
Limits:
|
||||
memory: 200Mi
|
||||
Requests:
|
||||
memory: 100Mi
|
||||
Environment: <none>
|
||||
Mounts: <none>
|
||||
Volumes: <none>
|
||||
Conditions:
|
||||
Type Status Reason
|
||||
---- ------ ------
|
||||
Available True MinimumReplicasAvailable
|
||||
Progressing True NewReplicaSetAvailable
|
||||
OldReplicaSets: <none>
|
||||
NewReplicaSet: vdu2-6696c74f5c (2/2 replicas created)
|
||||
Events:
|
||||
Type Reason Age From Message
|
||||
---- ------ ---- ---- -------
|
||||
Normal ScalingReplicaSet 20m deployment-controller Scaled up replica set vdu2-674d7d8766 to 2
|
||||
Normal ScalingReplicaSet 15m deployment-controller Scaled up replica set vdu2-6696c74f5c to 1
|
||||
Normal ScalingReplicaSet 14m deployment-controller Scaled down replica set vdu2-674d7d8766 to 1
|
||||
Normal ScalingReplicaSet 14m deployment-controller Scaled up replica set vdu2-6696c74f5c to 2
|
||||
Normal ScalingReplicaSet 14m deployment-controller Scaled down replica set vdu2-674d7d8766 to 0
|
||||
|
||||
.. note:: ``image`` has changed from ``nginx`` to ``nginx:alpine``.
|
||||
The age of deployment ``vdu2`` has not been reset, so deployment ``vdu2``
|
||||
has not redeployed.
|
||||
|
||||
Pods information after operation:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ kubectl get pods -o wide
|
||||
|
||||
Result:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
|
||||
vdu2-6696c74f5c-cjdh8 1/1 Running 0 15m 10.233.96.21 node2 <none> <none>
|
||||
vdu2-6696c74f5c-ssztd 1/1 Running 0 15m 10.233.96.20 node2 <none> <none>
|
||||
|
||||
.. note:: ``name`` of pods has changed before and after operation.
|
||||
The age of pods under deployment has been reset, so pods under
|
||||
this deployment has redeployed before and after operation.
|
||||
|
||||
.. _VNF Package for Common instantiate: https://opendev.org/openstack/tacker/src/branch/master/tacker/tests/functional/sol_kubernetes_v2/samples/test_instantiate_cnf_resources/contents
|
||||
.. _VNF Package for Change Current VNF Package: https://opendev.org/openstack/tacker/src/branch/master/tacker/tests/functional/sol_kubernetes_v2/samples/test_change_vnf_pkg_with_deployment/contents
|
||||
.. _ETSI SOL002 v3.5.1: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_nfv-sol002v030501p.pdf
|
@ -86,6 +86,25 @@ VM
|
||||
|
||||
etsi_vnf_change_external_vnf_connectivity
|
||||
|
||||
Change Current VNF Package
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
VM
|
||||
~~
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
etsi_vnf_change_current_vnf_package
|
||||
|
||||
Container
|
||||
~~~~~~~~~
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
etsi_cnf_change_current_vnf_package
|
||||
|
||||
Error Handling
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
|
1347
doc/source/user/etsi_vnf_change_current_vnf_package.rst
Normal file
1347
doc/source/user/etsi_vnf_change_current_vnf_package.rst
Normal file
File diff suppressed because it is too large
Load Diff
@ -280,6 +280,13 @@ Rollback VNF LCM Operation
|
||||
- ROLLED_BACK or FAILED_TEMP
|
||||
-
|
||||
- X
|
||||
* - Change Current VNF Package
|
||||
- | VNFM reverts changes of current vnf package for VNF instances.
|
||||
| e.g. Tacker reverts stack parameters and executes Heat stack-update.
|
||||
- FAILED_TEMP
|
||||
- ROLLED_BACK or FAILED_TEMP
|
||||
-
|
||||
- X
|
||||
|
||||
.. note::
|
||||
| In some cases, Rollback of Change external connectivity cannot recover
|
||||
@ -288,6 +295,8 @@ Rollback VNF LCM Operation
|
||||
the IP address and Port Id will be recovered by its rollback operation.
|
||||
| Otherwise, dynamic IP address and Port Id are not recovered
|
||||
by rollback operation.
|
||||
| Currently, Instantiate VNF with kubernetes vim does not support rollback
|
||||
operation when using v2 API.
|
||||
|
||||
This manual describes the following operations as use cases for
|
||||
rollback operations.
|
||||
@ -390,6 +399,12 @@ Fail VNF LCM Operation
|
||||
- FAILED
|
||||
- X
|
||||
- X
|
||||
* - Change Current VNF Package
|
||||
- Tacker simply changes LCM operation state to "FAILED" on Tacker-DB.
|
||||
- FAILED_TEMP
|
||||
- FAILED
|
||||
-
|
||||
- X
|
||||
|
||||
This manual describes the following operations as use cases for
|
||||
fail operations.
|
||||
@ -492,6 +507,16 @@ Retry VNF LCM Operation
|
||||
- COMPLETED or FAILED_TEMP
|
||||
- X
|
||||
- X
|
||||
* - Change Current VNF Package
|
||||
- VNFM retries a Change Current VNF Package operation.
|
||||
- FAILED_TEMP
|
||||
- COMPLETED or FAILED_TEMP
|
||||
-
|
||||
- X
|
||||
|
||||
.. note::
|
||||
| Currently, Instantiate VNF with kubernetes vim does not support retry
|
||||
operation when using v2 API.
|
||||
|
||||
This manual describes the following operations as use cases for
|
||||
retry operations.
|
||||
|
Loading…
x
Reference in New Issue
Block a user