Support ChangeCurrentVNFPackage for VNF software modification

Blueprint URL: https://blueprints.launchpad.net/tacker/+spec/upgrade-vnf-package

This specification describes the ChangeCurrentVNFPackage operation defined in ETSI NFV-SOL003 v3.3.1 [1].

Problem description

The ChangeCurrentVNFPackage API and VNF LCM Coordination interface are newly defined in ETSI NFV-SOL003 v3.3.1 [1] and ETSI NFV-SOL002 v3.5.1 [2], respectively according to the VNF software modification procedure in ETSI NFV-IFA007 v3.3.1 [3]. These new functions enable Tacker to update VNF instances in two ways: Blue-Green deployment and Rolling update. However, VNF LCM Coordination interface is not supported by most current VNF. We plan to implement this interface within Tacker for future usage. Therefore, this specification complies with ETSI NFV-SOL003 v3.3.1 [1] and ETSI NFV-SOL002 v3.3.1 [4], does not comply with ETSI NFV-SOL002 v3.5.1 [2].

Proposed change

We propose the following changes:

  1. Support for ChangeCurrentVNFPackage API.

  2. VNF software modification performs the following operations:

    1. Blue-Green deployment process for OpenStack VIM.

      • Create new VNF (VM).

      • Invoke coordinate VNF method.

      • Delete old VNF (VM).

      • The attributes in the TackerDB to be updated are as follows:

        • VnfInstance.vnfdId: Replace the existing vnfd ID with the new vnfd ID.

        • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.computeResource.resourceId: Update resourceId with the new resource ID.

        • VnfInstance.instantiatedVnfInfo.vnfVirtualLinkResourceInfo.networkResource.resourceId: Update resourceId with the new connection point ID.

        • VnfInstance.instantiatedVnfInfo.virtualStorageResourceInfo.storageResource.resourceId: Update resourceId with the new storage ID.

        • VnfInstance.instantiatedVnfInfo.instance_id: Update id with the new stack ID.

    2. Rolling update process for OpenStack VIM.

      • Update the existing VNF (VM).

        • In this step, Tacker will repeat update stack operation for each target VM.

      • Invoke coordinate VNF method.

      • The attributes in the TackerDB to be updated are as follows:

        • VnfInstance.vnfdId: Replace the existing vnfd ID with the new vnfd ID.

        • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.computeResource.resourceId: Update resourceId with the new resource ID. Whether the attribute is updated depends on the change of the resource. See note.

        Note

        VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.computeResource.resourceId is not updated by the below.

        • old computeResource (created by image) -> new computeResource (created by image)

        VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.computeResource.resourceId is updated by the below.

        • old computeResource (created by image) -> new computeResource (created by volume)

        • old computeResource (created by volume) -> new computeResource (created by image)

        • old computeResource (created by volume) -> new computeResource (created by volume)

    3. Blue-Green deployment process for Kubernetes VIM.

      • Create new CNF (Deployment).

      • Invoke coordinate VNF method.

      • Delete old CNF (Deployment).

      • The attributes in the TackerDB to be updated are as follows:

        • VnfInstance.vnfdId: Replace the existing vnfd ID with the new vnfd ID.

        • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.computeResource.resourceId: Update resourceId with the new Pod name.

        • VnfInstance.instantiatedVnfInfo.vnfVirtualLinkResourceInfo.networkResource.resourceId: Update resourceId with the new connection point ID.

        • VnfInstance.instantiatedVnfInfo.virtualStorageResourceInfo.storageResource.resourceId: Update resourceId with the new storage ID.

        • VnfResource.resourceName: Update resourceName with the new Deployment name.

    4. Rolling update process for Kubernetes VIM.

      • Update the existing CNF (Deployment).

      • Invoke coordinate VNF method.

      • The attributes in the TackerDB to be updated are as follows:

        • VnfInstance.vnfdId: Replace the existing vnfd ID with the new vnfd ID.

        • VnfInstance.metadata: Update metadata with the new file path specified in lcm-kubernetes-def-files in the request.

        • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.id: Update resourceInfoId with the new UUID.

        • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.computeResource.resourceId: Update resourceId with the new Pod name.

        • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.metadata: Update metadata for the new Pod.

        Note

        Rolling update changes the Pod on the original Deployment, so the Deployment itself and connection point are not changed. Therefore, this process does not need to modify VnfInstance.instantiatedVnfInfo.vnfVirtualLinkResourceInfo.networkResource.resourceId and VnfResource.resourceName in TackerDB.

  3. Implements the mechanism by which the VnfLcmDriver invokes the CoordinateVNF script specified in the request parameter.

  4. Provide sample CoordinateVNF script that uses the CoordinateVNF.

    • for OpenStack VIM

      • Configure the load balancer.

    • for Kubernetes VIM

      • Update Kubernetes Service.

    Note

    The information used to access each VNFC is managed by load balancers in the case of OpenStack VIM and by Service objects in the case of Kubernetes VIM.

Note

If an error occurs during the ChangeCurrentVNFPackage processing, the LCM status will become FAILED_TEMP. The implementation of each Rollback operation for Blue-Green deployments and Rolling update will be as follows:

  • Delete new instances created by the ChangeCurrentVNFPackage operation for Blue-Green deployments.

  • Recreate VNFC instances with the old VNF package to revert to the old version for the one running with the new version.

Note

The evaluation of whether a VNF package can be changed is described in ETSI NFV-SOL003 v3.3.1 [1], but is not considered in this spec.

The following shows the operation flow for each use case.

Change current VNF Package operation for OpenStack VIM

HEAT Template Configuration

Sample file of HEAT Template Configuration for OpenStack VIM.

top.yaml

heat_template_version: 2013-05-23
description: Sample template for Upgrade.

parameters:
  image_id:
    type: string
    description: Image ID to use for the instance.
  flavor_name:
    type: string
    description: Flavor name to use for the instance.
  num_of_instances:
    type: number
    description: Number of instances to create.
  ext_network_id:
    type: string
    description: External Network ID.

resources:
  group1:
    type: OS::Heat::AutoScalingGroup
    properties:
      min_size: 1
      max_size: 4
      desired_capacity: {get_param: num_of_instances}
      resource:
        type: nested_server.yaml
        properties:
          image_id: { get_param: image_id }
          flavor_name: { get_param: flavor_name }
          ext_network_id: { get_param: ext_network_id }

nested_server.yaml

heat_template_version: 2013-05-23
description: Sample template for scaling.

parameters:
  image_id:
    type: string
    description: Image ID to use for the instance.
  flavor_name:
    type: string
    description: Flavor name to use for the instance.
  ext_network_id:
    type: string

resources:
  cp:
    type: OS::Neutron::Port
    properties:
      network: { get_param: ext_network_id }
  group1:
    type: OS::Nova::Server
    properties:
      name: sample_server
      image: {get_param: image_id}
      flavor: {get_param: flavor_name}
      networks:
      - port:
          get_resource: cp

Blue-Green deployment

Below is a diagram of the Blue-Green deployment process for OpenStack VIM:

                                                                   +---------+
                                                                   |  VNFD   |
                                                                   |         |
                                                                   +-+-------+
                                                                     |
6. Coordinate                          (Script is included           v     +-------------------+
   New resource +--------------------+  in the package)      +----------+  | Change current    |
+---------------+ Coordinate VNF     +---------------------->|          |  | VNF Package       |
|               | script             | 5. CoordinateVNF      |   CSAR   |  | Request with      |
|   +-----------+                    |<------------------+   |          |  | Additional Params |
|   |           +-------+------------+                   |   +----+-----+  +-+-----------------+
|   | 8. Coordinate     | 7. Update load balancer        |        |          | 1. Change current VNF Package
|   |    Old resource   |                                |        |          |    request
|   |                   |                                |  +-----+----------+------------------------------+
|   |                   |                                |  |     v          v        VNFM                  |
|   |                   |                                |  |  +------------------------------+             |
|   |                   |                                |  |  |   Tacker-server              |             |
|   |                   |                                |  |  +--+---------------------------+             |
|   |                   |                                |  |     |  2. Change current VNF Package request  |
|   |                   |                                |  |     v                                         |
|   |                   |                                |  |  +-----------------------------------------+  |
|   |                   v                                |  |  |                                         |  |
|   |           +--------------------+                   |  |  |   +----------------------+              |  |
|   |           | LB                 |                   +--+--+---+ VnfLcmDriver         |              |  |
|   |           +--------------------+                      |  |   |                      |              |  |
|   |                                                       |  |   |                      |              |  |
|   |           +--------------------+ 11. Update TackerDB  |  |   |                      |              |  |
|   |           | TackerDB           |<---------------------+--+---+                      |              |  |
|   |           +--------------------+                      |  |   |                      |              |  |
|   |                                                       |  |   +-+---------------+----+              |  |
|   |                                                       |  |     | 3. Create New | 9. Terminate Old  |  |
|   |                                                       |  |     |    resource   |    resource       |  |
|   |           +--------------------+                      |  |     v               v                   |  |
|   |           |                    | 10. Terminate Old    |  |   +----------------------+              |  |
|   |           |  +--------------+  |     resource         |  |   | InfraDriver          |              |  |
|   +-----------+->| Old resource |<-+----------------------+--+---+                      |              |  |
|               |  +--------------+  | 4. Create New        |  |   |                      |              |  |
|               |  +--------------+  |    resource          |  |   |                      |              |  |
+---------------+->| New resource |<-+----------------------+--+---+                      |              |  |
                |  +--------------+  |                      |  |   +----------------------+              |  |
                |  VNF               |                      |  |                                         |  |
                +--------------------+                      |  |                                         |  |
                                                            |  |    Tacker-conductor                     |  |
                +--------------------+                      |  +-----------------------------------------+  |
                | Hardware Resources |                      |                                               |
                +--------------------+                      +-----------------------------------------------+

Sequence for Blue-Green Deployment operation (For OpenStack VIM)

  1. The Client sends a POST request to the “Individual VNF instance” resource.

  2. Tacker-server sends ChangeCurrentVNFPackage request to Tacker-conductor, then Tacker-conductor fetches an on-boarded VNF package and calls VnfLcmDriver.

  3. VnfLcmDriver sends a request to the InfraDriver to create new VNF.

  4. InfraDriver sends a request to the VIM to create new VNF.

  5. VnfLcmDriver calls CoordinateVNF.

  6. CoordinateVNF script sends a request to the new VNF to Coordinate VNF.

  7. CoordinateVNF script sends a request to the load balancer to update configuration.

  8. CoordinateVNF script sends a request to the old VNF to Coordinate VNF.

  9. VnfLcmDriver sends a request to the InfraDriver to terminate old VNF.

  10. InfraDriver sends a request to the VIM to terminate old VNF.

  11. VnfLcmDriver updates the following attributes in TackerDB:

    • VnfInstance.vnfdId

    • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.computeResource.resourceId

    • VnfInstance.instantiatedVnfInfo.vnfVirtualLinkResourceInfo.networkResource.resourceId

    • VnfInstance.instantiatedVnfInfo.virtualStorageResourceInfo.storageResource.resourceId

    • VnfInstance.instantiatedVnfInfo.instance_id

Rolling update

Below is a diagram of the Rolling update process for OpenStack VIM:

                                                                 +---------+
                                                                 |  VNFD   |
                                                                 |         |
                                                                 +-+-------+
                                                                   |
                                      (Script is included          v     +-------------------+
              +---------------------+  in the package)     +----------+  | Change current    |
+------------>| CoordinateVNF       +--------------------->|          |  | VNF Package       |
|             | script              |                      |   CSAR   |  | Request with      |
|   +---------+                     |                      |          |  | Additional Params |
|   |         +---------------------+                      +----+-----+  +-+-----------------+
|   | 7. Coordinate resource                                    |          | 1. Change current VNF Package
|   |                                                           |          |    request
|   |                                                     +-----+----------+------------------------------+
|   |                                                     |     v          v        VNFM                  |
|   |                                                     |  +-----------------------+                    |
|   |                                                     |  |   Tacker-server       |                    |
|   |                                                     |  +--+--------------------+                    |
|   |                                                     |     |  2. Change current VNF Package request  |
|   |                                                     |     v                                         |
|   |                                                     |  +-----------------------------------------+  |
|   |                                                     |  |                                         |  |
|   |                                                     |  |   +-------------------+                 |  |
|   |         +--------------------+                      |  |   | VnfLcmDriver      |                 |  |
|   |         | LB                 |                      |  |   |                   |                 |  |
|   |         +--------------------+                      |  |   |                   |                 |  |
|   |                                                     |  |   |                   |                 |  |
|   |         +--------------------+ 9. Update TackerDB   |  |   |                   |                 |  |
|   |         | TackerDB           |<---------------------+--+---+                   |                 |  |
|   |         +--------------------+                      |  |   +-+-----------------+                 |  |
|   |                                                     |  |     | 3. change_vnfpkg_process          |  |
|   |         +--------------------+                      |  |     v                                   |  |
|   |         |                    | 4. Get stack resource|  |   +-------------------+                 |  |
|   |         |  +--------------+  |    to update         |  |   | InfraDriver       | 8. Repeat steps |  |
|   |         |  | Resource     |<-+----------------------+--+---+                   |    5 through 7  |  |
|   +---------+->|              |  | 5. Update VNFC       |  |   |                   |    for each VNFC|  |
|             |  |              |<-+----------------------+--+---+                   +--------+        |  |
|             |  +--------------+  |                      |  |   |                   |        |        |  |
|             | VNF                |                      |  |   |                   |<-------+        |  |
|             +--------------------+                      |  |   |                   |                 |  |
|                                    6. Coordinate VNF    |  |   |                   |                 |  |
+---------------------------------------------------------+--+---+                   |                 |  |
                                                          |  |   +-------------------+                 |  |
                                                          |  |    Tacker-conductor                     |  |
              +--------------------+                      |  +-----------------------------------------+  |
              | Hardware Resources |                      |                                               |
              +--------------------+                      +-----------------------------------------------+

Sequence for Rolling update operation (For OpenStack VIM)

  1. The Client sends a POST request to the “Individual VNF instance” resource.

  2. Tacker-server sends ChangeCurrentVNFPackage request to Tacker-conductor, then Tacker-conductor fetches an on-boarded VNF package and calls VnfLcmDriver.

  3. VnfLcmDriver sends a request to the InfraDriver to change vnfpkg process.

  4. InfraDriver sends a request to the VIM to get stack resource to update.

  5. InfraDriver sends a request to the VIM to update stack.

  6. InfraDriver calls CoordinateVNF.

  7. CoordinateVNF script sends a request to the VNF to Coordinate VNF.

  8. Repeat steps 5 through 7 for each VNFC.

  9. VnfLcmDriver updates the following attributes in TackerDB:

    • VnfInstance.vnfdId

    • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.computeResource.resourceId

Change current VNF Package operation for Kubernetes VIM

Kubernetes deployment configuration

Sample files of Kubernetes configuration.

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-name
spec:
  replicas: 2
  selector:
    matchLabels:
      app: app-name
  template:
    metadata:
      labels:
        app: app-name
        version: original-version
    spec:
      containers:
      - name: app-name
        image: nginx:alpine
        ports:
        - containerPort: 80
        volumeMounts:
        - name: config
          mountPath: /usr/share/nginx/html
      volumes:
      - name: config
        configMap:
          name: nginx-app-original
  strategy:
  type: RollingUpdate

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: app-svc-name
spec:
  selector:
    app: app-name
    version: original-version
  ports:
  - name: http
    protocol: TCP
    port: 8089
    targetPort: 80
  type: ClusterIP

Blue-Green deployment

Below is a diagram of the Blue-Green deployment process for Kubernetes VIM:

                                                                  +---------+
                                                                  |  VNFD   |
                                                                  |         |
                                                                  +-+-------+
                                                                    |
6. Update    +----------------------+ (Script is included           v     +-------------------+
   Service   | CoordinateVNF script |  in the package)      +----------+  | Change current    |
+------------+                      +---------------------->|          |  | VNF Package       |
|            |                      | 5. CoordinateVNF      |   CSAR   |  | Request with      |
|            |                      |<------------------+   |          |  | Additional Params |
|            +----------------------+                   |   +----+-----+  +-+-----------------+
|                                                       |        |          | 1. Change current VNF Package
|                                                       |        |          |    request
|                                                       |  +-----+----------+------------------------------+
|                                                       |  |     v          v        VNFM                  |
|                                                       |  |  +------------------------------+             |
|                                                       |  |  |   Tacker-server              |             |
|                                                       |  |  +--+---------------------------+             |
|                                                       |  |     |  2. Change current VNF Package request  |
|                                                       |  |     v                                         |
|                                                       |  |  +-----------------------------------------+  |
|                                                       |  |  |                                         |  |
|                                                       |  |  |   +--------------------------+          |  |
|                                                       |  |  |   | VnfLcmDriver             |          |  |
|            +----------------------+                   +--+--+---+                          |          |  |
|            |  TackerDB            | 9. Update TackerDB   |  |   |                          |          |  |
|            |                      |<---------------------+--+---+                          |          |  |
|            +----------------------+                      |  |   |                          |          |  |
|            +----------------------+                      |  |   +-+---------------+--------+          |  |
|            |                      | 4. Create New        |  |     | 3. Apply New  | 7. Terminate      |  |
|            |  +----------------+  |    Deployment        |  |     |    Deployment |    Old            |  |
|            |  | New Deployment |<-+----------------------+--+-+   v               v    Deployment     |  |
|            |  |                |  |                      |  | | +--------------------------+          |  |
|            |  +----------------+  |                      |  | +-+ InfraDriver              |          |  |
|            |  +----------------+  |                      |  |   |                          |          |  |
+------------+->| Service        |  |                      |  |   |                          |          |  |
             |  |                |  |                      |  |   |                          |          |  |
             |  +----------------+  | 8. Terminate old     |  | +-+                          |          |  |
             |  +----------------+  |    Deployment        |  | | +--------------------------+          |  |
             |  | Old Deployment |<-+----------------------+--+-+                                       |  |
             |  |                |  |                      |  |                                         |  |
             |  +----------------+  |                      |  |                                         |  |
             |  Kubernetes cluster  |                      |  |                                         |  |
             +----------------------+                      |  |                                         |  |
                                                           |  |    Tacker-conductor                     |  |
             +----------------------+                      |  +-----------------------------------------+  |
             |  Hardware Resources  |                      |                                               |
             +----------------------+                      +-----------------------------------------------+

Sequence for Blue-Green deployment operation (For Kubernetes VIM)

  1. The Client sends a POST request to the “Individual VNF instance” resource.

  2. Tacker-server sends ChangeCurrentVNFPackage request to Tacker-conductor, then Tacker-conductor fetches an on-boarded VNF package and calls VnfLcmDriver.

  3. VnfLcmDriver sends a request to the InfraDriver to apply deployment.

  4. InfraDriver sends a request to the VIM to apply deployment.

  5. VnfLcmDriver calls CoordinateVNF.

  6. CoordinateVNF script sends a request to VIM to update label of Kubernetes Service.

  7. VnfLcmDriver sends a request to the InfraDriver to delete deployment.

  8. InfraDriver sends a request to the VIM to delete deployment.

  9. VnfLcmDriver updates the following attributes in TackerDB:

    • VnfInstance.vnfdId

    • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.computeResource.resourceId

    • VnfInstance.instantiatedVnfInfo.vnfVirtualLinkResourceInfo.networkResource.resourceId

    • VnfInstance.instantiatedVnfInfo.virtualStorageResourceInfo.storageResource.resourceId

    • VnfResource.resourceName

Rolling update

Below is a diagram of the Rolling update process for Kubernetes VIM:

                                                   +---------+
                                                   |  VNFD   |
                                                   |         |
                                                   +-+-------+
                                                     |
+----------------------+ (Script is included         v     +-------------------+
| CoordinateVNF script |  in the package)    +----------+  | Change current    |
|                      +-------------------->|          |  | VNF Package       |
|                      | 5. CoordinateVNF    |   CSAR   |  | Request with      |
|                      |<----------------+   |          |  | Additional Params |
+----------------------+                 |   +----+-----+  +-+-----------------+
                                         |        |          | 1. Change current VNF Package
                                         |        |          |    request
                                         |  +-----+----------+------------------------------+
                                         |  |     v          v        VNFM                  |
                                         |  |  +------------------------------+             |
                                         |  |  |   Tacker-server              |             |
                                         |  |  +--+---------------------------+             |
                                         |  |     |  2. Change current VNF Package request  |
                                         |  |     v                                         |
                                         |  |  +-----------------------------------------+  |
                                         |  |  |                                         |  |
                                         |  |  |    +------------------------+           |  |
                                         |  |  |    | VnfLcmDriver           |           |  |
                                         +--+--+----+                        |           |  |
+----------------------+ 6. Update TackerDB |  |    |                        |           |  |
| TackerDB             |<-------------------+--+----+                        |           |  |
+----------------------+                    |  |    |                        |           |  |
+----------------------+                    |  |    |                        |           |  |
|                      |                    |  |    +-+----------------------+           |  |
|  +----------------+  |                    |  |      | 3. Update                        |  |
|  | Service        |  |                    |  |      v    Deployment                    |  |
|  +----------------+  | 4. Update          |  |    +------------------------+           |  |
|  +----------------+  |    Deployment      |  |    | InfraDriver            |           |  |
|  | Deployment     |<-+--------------------+--+----+                        |           |  |
|  +----------------+  |                    |  |    |                        |           |  |
| Kubernetes cluster   |                    |  |    +------------------------+           |  |
+----------------------+                    |  |                                         |  |
                                            |  |    Tacker-conductor                     |  |
+----------------------+                    |  +-----------------------------------------+  |
| Hardware Resources   |                    |                                               |
+----------------------+                    +-----------------------------------------------+

Sequence for Rolling update operation (For Kubernetes VIM)

  1. The Client sends a POST request to the “Individual VNF instance” resource.

  2. Tacker-server sends ChangeCurrentVNFPackage request to Tacker-conductor, then Tacker-conductor fetches an on-boarded VNF package and calls VnfLcmDriver

  3. VnfLcmDriver sends a request to the InfraDriver to apply deployment.

  4. InfraDriver sends a request to the VIM to apply deployment.

  5. VnfLcmDriver calls CoordinateVNF.

    Note

    CoordinateVNF has no action for this use case.

  6. VnfLcmDriver updates the following attributes in TackerDB:

    • VnfInstance.vnfdId

    • VnfInstance.metadata

    • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.id

    • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.computeResource.resourceId

    • VnfInstance.instantiatedVnfInfo.vnfcResourceInfo.metadata

    Note

    VnfInstance.metadata is updated only when a new file path is specified in lcm-kubernetes-def-files in the request.

Alternatives

None

Data model impact

None

REST API impact

The following RESTful API will be added. This RESTful API will be based on ETSI NFV-SOL003 v3.3.1 [1].

  • Name: change current VNF Package
    Description: Request to change current VNF package by vnfd ID.
    Method type: POST
    URL for the resource: /vnflcm/v2/vnf_instances/{vnfInstanceId}/change_vnfpkg
    Request:

    Data type

    Cardinality

    Description

    ChangeCurrentVnfPkgRequest

    1

    Parameters for the change current VNF package.

    Attribute name

    Data type

    Cardinality

    Parameter description

    Supported in (Y)

    vnfdId

    Identifier

    1

    Identifier of the VNFD which defines the destination VNF Package for the change.

    Yes

    extVirtualLinks

    ExtVirtualLinkData

    0..N

    Information about external VLs to connect the VNF to.

    No

    extManagedVirtualLinks

    ExtManagedVirtualLinkData

    0..N

    Information about internal VLs that are managed by the NFVO.

    No

    vimConnectionInfo

    map (VimConnectionInfo)

    0..N

    “vimConnectionInfo” attribute array in “VnfInstance”.

    No

    additionalParams

    KeyValuePairs

    0..1

    Additional parameters passed by the NFVO as input to the process.

    Yes

    extensions

    KeyValuePairs

    0..1

    “extensions” attribute in “VnfInstance”.

    No

    vnfConfigurableProperties

    KeyValuePairs

    0..1

    “vnfConfigurableProperties” attribute in “VnfInstance”.

    No

    User gives following parameter as additionalParams:

    additionalParams

    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.

    lcm-kubernetes-def-files

    0..N

    File path of Kubernetes definition files such as configMap or secret. Required only for the Kubernetes VIM.

    Following is a sample of request body:

    {
      "vnfdId": "093c38b5-a731-4593-a578-d12e42596b3e",
      "additionalParams": {
        "upgrade_type": "Blue-Green",
        "lcm-operation-coordinate-old-vnf": "./coordinate_old_vnf.py",
        "lcm-operation-coordinate-old-vnf-class": "CoordinateOldVnf",
        "lcm-operation-coordinate-new-vnf": "./coordinate_new_vnf.py",
        "lcm-operation-coordinate-new-vnf-class": "CoordinateNewVnf",
        "vdu_params": {
          "vdu_id": "VDU1",
          "old_vnfc_param": {
            "cp_name": "CP1",
            "username": "ubuntu",
            "password": "ubuntu"
          },
          "new_vnfc_param": {
            "cp_name": "CP1",
            "username": "ubuntu",
            "password": "ubuntu"
          }
        },
        "external_lb_param": {
          "ip_address": "10.10.0.50",
          "username": "ubuntu",
          "password": "ubuntu"
        },
        "lcm-kubernetes-def-files": [
          "Files/kubernetes/deployment.yaml"
        ]
      }
    }
    
    Response:

    Response Codes

    Description

    202 Accepted

    The request was accepted for processing, but the processing has not been completed.

    404 Not Found

    The requested resource could not be found.

    409 Conflict

    This operation conflicted with another operation on this resource.

Security impact

None

Notifications impact

None

Other end user impact

None

Performance Impact

None

Other deployer impact

None

Developer impact

None

Implementation

Assignee(s)

Primary assignee:

Hirofumi Noguchi<hirofumi.noguchi.rs@hco.ntt.co.jp>

Masaki Ueno<masaki.ueno.up@hco.ntt.co.jp>

Other contributors:

Yusuke Niimi<niimi.yusuke@fujitsu.com>

Yoshiyuki Katada<katada.yoshiyuk@fujitsu.com>

Ayumu Ueha<ueha.ayumu@fujitsu.com>

Work Items

  1. Support for ChangeCurrentVNFPackage API.

  2. Implement preamble and postamble for ChangeCurrentVNFPackage

  3. VNF software modification performs the following operations:

    1. Blue-Green deployment process for OpenStack VIM.

    2. Rolling update process for OpenStack VIM.

    3. Blue-Green deployment process for Kubernetes VIM.

    4. Rolling update process for Kubernetes VIM.

  4. Implements the mechanism by which the VnfLcmDriver invokes the CoordinateVNF script specified in the request parameter.

  5. Provide sample CoordinateVNF script to simulate the CoordinateVNF.

Dependencies

None

Testing

Unit and functional tests will be added to cover cases required in the spec.

Documentation Impact

Complete user guide will be added to explain upgrading VNF package from the perspective of VNF LCM APIs.

References