Add doc of Change Current VNF Package
This patch provides Tacker documents for change current vnf package in V2-API. The specification about new API is added to API Reference. Also, change current vnf package operation is added to Tacker Use Cases Guide and CLI Reference. This patch also adds change current vnf package restrictions to error_handling user guide. Change-Id: I3f18bbab17c67e717dc0a9d36e92f812a40862e5
This commit is contained in:
parent
acf84a168a
commit
08b8eb7445
|
@ -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 the process,
|
||||
specific to the VNF of which upgrade_type is selected.
|
||||
in: body
|
||||
required: true
|
||||
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 the 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
|
||||
|
|
|
@ -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,46 @@ 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
|
||||
- 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)
|
||||
======================================
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
|
@ -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
|
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
|
@ -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,17 @@ 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, only rollback and retry change
|
||||
current vnf package 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 suuport `RollingUpdate` upgrade type, `BlueGreen` will be
|
||||
supported in future releases.
|
||||
|
||||
1. Create VNF Identifier
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -448,7 +456,40 @@ Help:
|
|||
-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
|
||||
|
||||
|
||||
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 +520,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 +553,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 +681,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 +728,7 @@ Help:
|
|||
tacker server will throw bad request error
|
||||
|
||||
|
||||
15. Show LCM Operation Occurrence
|
||||
16. Show LCM Operation Occurrence
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: console
|
||||
|
@ -751,7 +792,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
|
||||
|
|
|
@ -0,0 +1,527 @@
|
|||
===========================================
|
||||
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 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
|
||||
|
||||
You can refer to :doc:`./etsi_containerized_vnf_usage_guide` for the
|
||||
procedure of preparation for changing current vnf package operation from
|
||||
"register VIM" 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`_
|
||||
|
||||
|
||||
The operation for Change Current VNF Package is need to be
|
||||
executed before "Terminate VNF" in the procedure of
|
||||
:doc:`./etsi_vnf_deployment_as_vm_with_tosca`.
|
||||
|
||||
|
||||
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-vnfpkg` command.
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
||||
.. note:: sample_param_file_for_specified_resources.json contains
|
||||
all optional parameters.
|
||||
``vnfdId`` is the vnfd id of the new vnf package you uploaded.
|
||||
``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.
|
||||
|
||||
.. note:: Currently, this operation only supports some functions of
|
||||
`Change Current VNF Package`.
|
||||
|
||||
* There are several ways to update deployment. But in Yoga version, only
|
||||
support `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
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
We 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
|
||||
|
||||
|
||||
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
|
||||
|
||||
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
|
|
@ -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
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
|
|
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…
Reference in New Issue