Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This is a continuation of the use case started in Casablanca: 5G - PNF Software Update

Background (R3 Casablanca)

In Casablanca,  the UC leveraged the Ansible adaptor of ONAP controller to implement three S/W upgrade related operations for 5G PNFs. As an important feature the new workflow supports an External Controller (EC) in the execution of these operations. All these operations  have shared the same LCM APIs with VNF S/W upgrade with PNF specific parameters passed in the API payloads. The corresponding DGs of LCM APIs are updated. The operations are:

  • /operations/LCM:upgrade-pre-check
  • /operations/LCM:upgrade-software
  • /operations/LCM:upgrade-post-check

Dublin Scope

For Dublin, the target of this UC includes:

  • 3GPP Software Management API alignment
    • South-bound of SDNC: Extend upgrade-software operation by leveraging sub-operations from 3GPP (like download/install/activate).
    • North-bound of SDNC: Rollback/fallback API support for 5G PNF
  • Workflow support for PNF in-place SW upgrade in SO (stretch goal)

Presentations and Discussion Slides:

Related Meeting Links:

Development Status

Proposed Dublin scope presented Dec 20, 2018 to the 5G UC meeting.

...

APPC

SDNC

CCSDK

...

...

  1. Support vendor-specific mapping of upgrade APIs to NETCONF requests in addition to other options.

  2. Support of roll-back API for PNF, New DG needed. Impact to SO building blocks and SDNC.
  3. LCM API payload  and playbook enhancements for S/W upgrade for alignment with 3GPP S/W management APIs in ansible playbooks
  4. PNF S/W upgrade workflow design and test (Stretch goal)

...

...

SO

VID

...

...

  1. Provide re-usable workflows and building blocks for PNF SW upgrade
  2. Trigger upgrade workflow from GUI

...

...

Project Impacts

...

Description

...

JIRA Links

...

SDNC/CCSDK

...

Add SDNC LCM action - rollback

...

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-664
 

...

complete rollback LCM action for PNF   S/W upgrade

...

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-669

...

create a DG for PNF S/W upgrade

...

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-670

...

provide corresponding ansible playbook   for rollback operation

...

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-671

...

Extend PNF upgrade-software   operation by leveraging sub-operations from 3GPP (like   download/install/activate)

...

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-677

...

External   Controller

...

Support swFallback/download/install/activate operations

...

NA

Requirements Impact

CCSDK → Changes in LCM.yang file

SDN-C → (1) New ansible playbooks, (2) New DG for rollback

EC → New substeps such as sw download, install and activate

API changes

  • Yang model changes to current LCM:rollback action in CCSDK (mandatory fields in rollback action will be optional to make the LCM:rollback action more generic, optional output payload field is added)
  • Definition of rollback input and output payloads for 5G PNF specific rollback
  • Possible payload changes into existing API /operations/LCM:upgrade-software
  • sw download, install and activate APIs in southbound of SDNC (to EC) as part of Ansible playbook for LCM:upgrade-software API.

API details

(1) Provided by SDN-C/CCSDK:

...

Code Block
languageyml
themeEmacs
collapsetrue
rpc rollback {
    description "An operation to rollback to particular snapshot of a virtual network function (or VM)";
    input {
        uses common-header;
        leaf action {
            type action;
             mandatory true;
        }
        uses action-identifiers;
        leaf payload {
            type payload;
            mandatory false;
        }
        leaf identity-url {
            type string;
            mandatory false;
        }
        leaf snapshot-id {
            type string;
             mandatory false;
        }
    }
    output {
        uses common-header;
        uses status;
        leaf payload {
            type payload;
            mandatory false;
        }
    }
}
Code Block
languagexml
themeEmacs
collapsetrue
{
  "input": {
    "action": "Rollback",
    "action-identifiers": {
      "vnf-id": "5gDU0001"
    },
    "common-header": {
      "api-ver": "2.00",
      "flags": {
        "force": "FALSE",
        "mode": "NORMAL",
        "ttl": 65000
      },
      "originator-id": "MSO",
      "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "timestamp": "2019-03-15T09:07:58.255Z"
    },
    "payload": "{\"pnf-flag\":\"true\", \"ipaddress-v4-oam\": \"192.168.35.83\", \"filter\": \"\\\\'$..[?(@.nEIdentification == \\\\\\\"5gDU0001\\\\\\\")]\\\\'\"}"
  }
}

400: Success

Code Block
languagexml
themeEmacs
collapsetrue
{
    "output": {
        "common-header": {
            "api-ver": "2.00",
            "originator-id": "MSO",
            "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
            "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
        },
        "payload": "{\"nEList\": [{\"nEIdentification\": \"5gDU0001\", \"swFallbackStatus\": \"fallbackSuccessful\"}], \"result\": \"Success\"}",
        "status": {
            "code": 400,
            "message": "Ansible Request  2e0690ed-6b7a-43b1-a061-8e4ac7534609 finished with Result = success, Message = FINISHED"
        }
    }
}

...

Code Block
languageyml
themeEmacs
collapsetrue
rpc upgrade-pre-check {
    description "An operation to check that the VNF has the correct software version needed for a software upgrade.";
    input {
        uses common-header;
        leaf action {
            type action;
            mandatory true;
        }
        uses action-identifiers;
        leaf payload {
            type payload;
            mandatory true;
       }
    }
    output {
        uses common-header;
        uses status;
        leaf payload {
            type payload;
            mandatory true;
                }
    }
}
Code Block
languagexml
themeEmacs
collapsetrue
{
  "input": {
    "action": "UpgradePreCheck",
    "action-identifiers": {
      "vnf-id": "5gDU0001"
    },
    "common-header": {
      "api-ver": "2.00",
      "flags": {
        "force": "FALSE",
        "mode": "NORMAL",
        "ttl": 65000
      },
      "originator-id": "MSO",
      "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "timestamp": "2019-03-15T09:07:58.255Z"
    },
    "payload": "{\"pnf-flag\":\"true\", \"pnf-name\": \"5gDU0001\",\"pnfId\": \"5gDU0001\", \"ipaddress-v4-oam\": \"192.168.35.83\",\"oldSwVersion\": \"v1\", \"targetSwVersion\": \"v2\", \"ruleName\": \"r001\", \"Id\": \"10\", \"additionalData\":\"{}\"}"
  }
}

400: Success

Code Block
languagexml
themeEmacs
collapsetrue
{
    "output": {
        "common-header": {
            "api-ver": "2.00",
            "originator-id": "MSO",
            "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
            "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
        },
        "payload": "{\"result\": \"Success\"}",
        "status": {
            "code": 400,
            "message": "Ansible Request  f0f45105-1a51-4592-a31b-f178d5eb4638 finished with Result = success, Message = FINISHED"
        }
    }
}

...

Code Block
languageyml
themeEmacs
collapsetrue
rpc upgrade-post-check {
    description "An operation to check the VNF upgrade has been successful completed and all processes are running properly.";
    input {
        uses common-header;
        leaf action {
            type action;
            mandatory true;
        }
        uses action-identifiers;
        leaf payload {
            type payload;
            mandatory true;
       }
    }
    output {
        uses common-header;
        uses status;
        leaf payload {
            type payload;
            mandatory true;
                     }
    }
}
Code Block
languagexml
themeEmacs
collapsetrue
{
  "input": {
    "action": "UpgradePostCheck",
    "action-identifiers": {
      "vnf-id": "5gDU0001"
    },
    "common-header": {
      "api-ver": "2.00",
      "flags": {
        "force": "FALSE",
        "mode": "NORMAL",
        "ttl": 65000
      },
      "originator-id": "MSO",
      "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "timestamp": "2019-02-23T09:07:58.255Z"
    },
    "payload": "{\"pnf-flag\":\"true\", \"pnf-name\": \"5gDU0001\",\"pnfId\": \"5gDU0001\", \"ipaddress-v4-oam\": \"192.168.35.83\",\"oldSwVersion\": \"v1\", \"targetSwVersion\": \"v2\", \"ruleName\": \"r102\", \"Id\": \"10\", \"additionalData\":\"{}\"}"
  }
}

400: Success

Code Block
languagexml
themeEmacs
collapsetrue
{
    "output": {
        "common-header": {
            "api-ver": "2.00",
            "originator-id": "MSO",
            "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
            "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
        },
        "payload": "{\"result\": \"Success\"}",
        "status": {
            "code": 400,
            "message": "Ansible Request  c1c14dee-a80d-40b8-800a-9216a27c7d1c finished with Result = success, Message = FINISHED"
        }
    }
}

...

Code Block
languageyml
themeEmacs
collapsetrue
rpc upgrade-software {
    description "An operation to upgrade the target VNF to a new version and expected that the VNF is in a quiesced status .";
    input {
        uses common-header;
        leaf action {
            type action;
            mandatory true;
        }
        uses action-identifiers;
        leaf payload {
            type payload;
            mandatory true;
       }
    }
    output {
        uses common-header;
        uses status;
    }
}
Code Block
languagexml
themeEmacs
collapsetrue
{
  "input": {
    "action": "UpgradeSoftware",
    "action-identifiers": {
      "vnf-id": "5gDU0001"
    },
    "common-header": {
      "api-ver": "2.00",
      "flags": {
        "force": "FALSE",
        "mode": "NORMAL",
        "ttl": 65000
      },
      "originator-id": "MSO",
      "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "timestamp": "2019-03-15T09:07:58.255Z"
    },
    "payload": "{\"pnf-flag\":\"true\", \"pnfId\": \"5gDU0001\", \"ipaddress-v4-oam\": \"192.168.35.83\", \"targetSwVersion\": \"\\\\'[{\\\\\\\"swLocation\\\\\\\": \\\\\\\"http://192.168.35.144:10080/ran_du_pkg1-v2.zip\\\\\\\", \\\\\\\"swFileSize\\\\\\\": 353, \\\\\\\"swFileCompression\\\\\\\": \\\\\\\"ZIP\\\\\\\", \\\\\\\"swFileFormat\\\\\\\": \\\\\\\"zip\\\\\\\"}, {\\\\\\\"swLocation\\\\\\\": \\\\\\\"http://192.168.35.144:10080/ran_du_pkg2-v2.zip\\\\\\\", \\\\\\\"swFileSize\\\\\\\": 353, \\\\\\\"swFileCompression\\\\\\\": \\\\\\\"ZIP\\\\\\\", \\\\\\\"swFileFormat\\\\\\\": \\\\\\\"zip\\\\\\\"}]\\\\'\"}"
  }
}

400: Success

Code Block
languagexml
themeEmacs
collapsetrue
{
    "output": {
        "common-header": {
            "api-ver": "2.00",
            "originator-id": "MSO",
            "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
            "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
        },
        "status": {
            "code": 400,
            "message": "Ansible Request  a3962a33-86ba-4346-8ef2-e2890d1ba734 finished with Result = success, Message = FINISHED"
        }
    }
}

*: These lcm APIs inherit from R3.

(2) Provided by External Controller:

Test cases and Status

Master Integration Test Page: Dublin Release Integration Testing Status

...

1 PreCheck test

...

Ensure LCM:upgrade-pre-check can be executed (north-bound of SDNC)

...

2 SwUpgrade test

...

Ensure LCM:upgrade-software can be executed (north-bound of SDNC)

...

3 PostCheck test

...

Ensure LCM:upgrade-post-check can be executed (north-bound of SDNC)

...

5 SwDownload

...

Ensure software download API can be executed (south-bound of SDNC to EC)

...

6 SwInstall

...

Ensure software install API can be executed (south-bound of SDNC to EC)

...

Status
colourRed
titleNOT TESTED

...

7 SwActivate

...

Ensure software activate API can be executed (south-bound of SDNC to EC)

...

This is a continuation of the use case started in Casablanca: 5G - PNF Software Update

Background (R3 Casablanca)

In Casablanca,  the UC leveraged the Ansible adaptor of ONAP controller to implement three S/W upgrade related operations for 5G PNFs. As an important feature the new workflow supports an External Controller (EC) in the execution of these operations. All these operations  have shared the same LCM APIs with VNF S/W upgrade with PNF specific parameters passed in the API payloads. The corresponding DGs of LCM APIs are updated. The operations are:

  • /operations/LCM:upgrade-pre-check
  • /operations/LCM:upgrade-software
  • /operations/LCM:upgrade-post-check

Dublin Scope

For Dublin, the target of this UC includes:

  • 3GPP Software Management API alignment
    • South-bound of SDNC: Extend upgrade-software operation by leveraging sub-operations from 3GPP (like download/install/activate).
    • North-bound of SDNC: Rollback/fallback API support for 5G PNF
  • Workflow support for PNF in-place SW upgrade in SO (stretch goal)


Presentations and Discussion Slides:

Related Meeting Links:

Development Status

Proposed Dublin scope presented Dec 20, 2018 to the 5G UC meeting.

ProjectPTL/ContanctsJIRADescriptionStatus

APPC

SDNC

CCSDK


  1. Support vendor-specific mapping of upgrade APIs to NETCONF requests in addition to other options.

  2. Support of roll-back API for PNF, New DG needed. Impact to SO building blocks and SDNC.
  3. LCM API payload  and playbook enhancements for S/W upgrade for alignment with 3GPP S/W management APIs in ansible playbooks
  4. PNF S/W upgrade workflow design and test (Stretch goal)

VF-C
No Impact

SO

VID


  1. Provide re-usable workflows and building blocks for PNF SW upgrade
  2. Trigger upgrade workflow from GUI

IntegrationYang Xu
No impact
External Controller
Support for 3GPP API calls for sw download, install and activate.


Project Impacts

Description

JIRA Links

SDNC/CCSDK

Add SDNC LCM action - rollback

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-664
 

complete rollback LCM action for PNF   S/W upgrade

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-669

create a DG for PNF S/W upgrade

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-670

provide corresponding ansible playbook   for rollback operation

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-671

Extend PNF upgrade-software   operation by leveraging sub-operations from 3GPP (like   download/install/activate)

Jira Legacy
serverSystem Jira
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keySDNC-677

External   Controller

Support swFallback/download/install/activate operations

NA

Requirements Impact

CCSDK → Changes in LCM.yang file

SDN-C → (1) New ansible playbooks, (2) New DG for rollback

EC → New substeps such as sw download, install and activate

API changes

  • Yang model changes to current LCM:rollback action in CCSDK (mandatory fields in rollback action will be optional to make the LCM:rollback action more generic, optional output payload field is added)
  • Definition of rollback input and output payloads for 5G PNF specific rollback
  • Possible payload changes into existing API /operations/LCM:upgrade-software
  • sw download, install and activate APIs in southbound of SDNC (to EC) as part of Ansible playbook for LCM:upgrade-software API.

API details


(1) Provided by SDN-C/CCSDK:

LCM API Abbre.HTTP MethodURIYang Model SectionRequest ExampleResponse Example
rollbackPost/operations/LCM:rollback


Code Block
languageyml
themeEmacs
collapsetrue
rpc rollback {
    description "An operation to rollback to particular snapshot of a virtual network function (or VM)";
    input {
        uses common-header;
        leaf action {
            type action;
             mandatory true;
        }
        uses action-identifiers;
        leaf payload {
            type payload;
            mandatory false;
        }
        leaf identity-url {
            type string;
            mandatory false;
        }
        leaf snapshot-id {
            type string;
             mandatory false;
        }
    }
    output {
        uses common-header;
        uses status;
        leaf payload {
            type payload;
            mandatory false;
        }
    }
}



Code Block
languagexml
themeEmacs
collapsetrue
{
  "input": {
    "action": "Rollback",
    "action-identifiers": {
      "vnf-id": "5gDU0001"
    },
    "common-header": {
      "api-ver": "2.00",
      "flags": {
        "force": "FALSE",
        "mode": "NORMAL",
        "ttl": 65000
      },
      "originator-id": "MSO",
      "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "timestamp": "2019-03-15T09:07:58.255Z"
    },
    "payload": "{\"pnf-flag\":\"true\", \"ipaddress-v4-oam\": \"192.168.35.83\", \"filter\": \"\\\\'$..[?(@.nEIdentification == \\\\\\\"5gDU0001\\\\\\\")]\\\\'\"}"
  }
}


400: Success

Code Block
languagexml
themeEmacs
collapsetrue
{
    "output": {
        "common-header": {
            "api-ver": "2.00",
            "originator-id": "MSO",
            "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
            "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
        },
        "payload": "{\"nEList\": [{\"nEIdentification\": \"5gDU0001\", \"swFallbackStatus\": \"fallbackSuccessful\"}], \"result\": \"Success\"}",
        "status": {
            "code": 400,
            "message": "Ansible Request  2e0690ed-6b7a-43b1-a061-8e4ac7534609 finished with Result = success, Message = FINISHED"
        }
    }
}


precheck*/operations/LCM:upgrade-pre-check


Code Block
languageyml
themeEmacs
collapsetrue
rpc upgrade-pre-check {
    description "An operation to check that the VNF has the correct software version needed for a software upgrade.";
    input {
        uses common-header;
        leaf action {
            type action;
            mandatory true;
        }
        uses action-identifiers;
        leaf payload {
            type payload;
            mandatory true;
       }
    }
    output {
        uses common-header;
        uses status;
        leaf payload {
            type payload;
            mandatory true;
                }
    }
}



Code Block
languagexml
themeEmacs
collapsetrue
{
  "input": {
    "action": "UpgradePreCheck",
    "action-identifiers": {
      "vnf-id": "5gDU0001"
    },
    "common-header": {
      "api-ver": "2.00",
      "flags": {
        "force": "FALSE",
        "mode": "NORMAL",
        "ttl": 65000
      },
      "originator-id": "MSO",
      "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "timestamp": "2019-03-15T09:07:58.255Z"
    },
    "payload": "{\"pnf-flag\":\"true\", \"pnf-name\": \"5gDU0001\",\"pnfId\": \"5gDU0001\", \"ipaddress-v4-oam\": \"192.168.35.83\",\"oldSwVersion\": \"v1\", \"targetSwVersion\": \"v2\", \"ruleName\": \"r001\", \"Id\": \"10\", \"additionalData\":\"{}\"}"
  }
}


400: Success

Code Block
languagexml
themeEmacs
collapsetrue
{
    "output": {
        "common-header": {
            "api-ver": "2.00",
            "originator-id": "MSO",
            "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
            "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
        },
        "payload": "{\"result\": \"Success\"}",
        "status": {
            "code": 400,
            "message": "Ansible Request  f0f45105-1a51-4592-a31b-f178d5eb4638 finished with Result = success, Message = FINISHED"
        }
    }
}


postcheck*/operations/LCM:upgrade-post-check


Code Block
languageyml
themeEmacs
collapsetrue
rpc upgrade-post-check {
    description "An operation to check the VNF upgrade has been successful completed and all processes are running properly.";
    input {
        uses common-header;
        leaf action {
            type action;
            mandatory true;
        }
        uses action-identifiers;
        leaf payload {
            type payload;
            mandatory true;
       }
    }
    output {
        uses common-header;
        uses status;
        leaf payload {
            type payload;
            mandatory true;
                     }
    }
}



Code Block
languagexml
themeEmacs
collapsetrue
{
  "input": {
    "action": "UpgradePostCheck",
    "action-identifiers": {
      "vnf-id": "5gDU0001"
    },
    "common-header": {
      "api-ver": "2.00",
      "flags": {
        "force": "FALSE",
        "mode": "NORMAL",
        "ttl": 65000
      },
      "originator-id": "MSO",
      "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "timestamp": "2019-02-23T09:07:58.255Z"
    },
    "payload": "{\"pnf-flag\":\"true\", \"pnf-name\": \"5gDU0001\",\"pnfId\": \"5gDU0001\", \"ipaddress-v4-oam\": UpgradePostCheck\"192.168.35.83\",\"oldSwVersion\": \"v1\", \"targetSwVersion\": \"v2\", \"ruleName\": \"r102\", \"Id\": \"10\", \"additionalData\":\"{}\"}"
  }
}


400: Success

Code Block
languagexml
themeEmacs
collapsetrue
{
    "output": {
        "common-header": {
            "api-ver": "2.00",
            "originator-id": "MSO",
            "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
            "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
        },
        "payload": "{\"result\": \"Success\"}",
        "status": {
            "code": 400,
            "message": "Ansible Request  c1c14dee-a80d-40b8-800a-9216a27c7d1c finished with Result = success, Message = FINISHED"
        }
    }
}


upgrade-software*/operations/LCM:upgrade-software


Code Block
languageyml
themeEmacs
collapsetrue
rpc upgrade-software {
    description "An operation to upgrade the target VNF to a new version and expected that the VNF is in a quiesced status .";
    input {
        uses common-header;
        leaf action {
            type action;
            mandatory true;
        }
        uses action-identifiers;
        leaf payload {
            type payload;
            mandatory true;
       }
    }
    output {
        uses common-header;
        uses status;
    }
}



Code Block
languagexml
themeEmacs
collapsetrue
{
  "input": {
    "action": "UpgradeSoftware",
    "action-identifiers": {
      "vnf-id": "5gDU0001"
    },
    "common-header": {
      "api-ver": "2.00",
      "flags": {
        "force": "FALSE",
        "mode": "NORMAL",
        "ttl": 65000
      },
      "originator-id": "MSO",
      "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
      "timestamp": "2019-03-15T09:07:58.255Z"
    },
    "payload": "{\"pnf-flag\":\"true\", \"pnfId\": \"5gDU0001\", \"ipaddress-v4-oam\": \"192.168.35.83\", \"targetSwVersion\": \"\\\\'[{\\\\\\\"swLocation\\\\\\\": \\\\\\\"http://192.168.35.144:10080/ran_du_pkg1-v2.zip\\\\\\\", \\\\\\\"swFileSize\\\\\\\": 353, \\\\\\\"swFileCompression\\\\\\\": \\\\\\\"ZIP\\\\\\\", \\\\\\\"swFileFormat\\\\\\\": \\\\\\\"zip\\\\\\\"}, {\\\\\\\"swLocation\\\\\\\": \\\\\\\"http://192.168.35.144:10080/ran_du_pkg2-v2.zip\\\\\\\", \\\\\\\"swFileSize\\\\\\\": 353, \\\\\\\"swFileCompression\\\\\\\": \\\\\\\"ZIP\\\\\\\", \\\\\\\"swFileFormat\\\\\\\": \\\\\\\"zip\\\\\\\"}]\\\\'\"}"
  }
}


400: Success

Code Block
languagexml
themeEmacs
collapsetrue
{
    "output": {
        "common-header": {
            "api-ver": "2.00",
            "originator-id": "MSO",
            "request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
            "sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
        },
        "status": {
            "code": 400,
            "message": "Ansible Request  a3962a33-86ba-4346-8ef2-e2890d1ba734 finished with Result = success, Message = FINISHED"
        }
    }
}


*: These lcm APIs inherit from R3.

The grammar of filter parameter of rollback API is JsonPath.

(2) Provided by External Controller:


Test cases and Status

Master Integration Test Page: Dublin Release Integration Testing Status


#Test Case DescriptionTest Status

1 PreCheck test

Ensure LCM:upgrade-pre-check can be executed (north-bound of SDNC)

Status
colourGreen
titlePASS

2 SwUpgrade test

Ensure LCM:upgrade-software can be executed (north-bound of SDNC)

Status
colourGreen
titlePASS

3 PostCheck test

Ensure LCM:upgrade-post-check can be executed (north-bound of SDNC)

Status
colourGreen
titlePASS

4 SwRollback testEnsure LCM:rollback can be executed (north-bound of SDNC)

Status
colourGreen
titlePASS

5 SwDownload

Ensure software download API can be executed (south-bound of SDNC to EC)

Status
colourGreen
titlePASS

6 SwInstall

Ensure software install API can be executed (south-bound of SDNC to EC)

Status
colourGreen
titlePASS

7 SwActivate

Ensure software activate API can be executed (south-bound of SDNC to EC)

Status
colourGreen
titlePASS


Test Details

Preparation

1.  Modify the file /opt/onap/sdnc/data/properties/lcm-dg.properties in sdnc container as follows:

-lcm.pnf.upgrade-pre-check.playbookname=ansible_precheck_pnf
-lcm.pnf.upgrade-post-check.playbookname=ansible_postcheck_pnf
-lcm.pnf.upgrade-software.playbookname=ansible_upgradesw_pnf
-lcm.pnf.rollback.playbookname=ansible_rollback_pnf
+lcm.pnf.upgrade-pre-check.playbookname=ansible_huawei_precheck
+lcm.pnf.upgrade-post-check.playbookname=ansible_huawei_postcheck
+lcm.pnf.upgrade-software.playbookname=ansible_huawei_upgrade
+lcm.pnf.rollback.playbookname=ansible_huawei_rollback

And then restart the sdnc container.

2.  Add the following line in the file in /opt/ansible-server/Playbooks/Ansible_inventory in ansible-server container:

192.168.35.83 ansible_connection=ssh ansible_ssh_user=ubuntu ansible_ssh_private_key_file=/home/ansible/.ssh/ssh_key_file

Where ssh_key_file is private key of SSH user ubuntu at host 192.168.35.83.

Host 192.168.35.83 is the EMS Simulator.

Test Result

Test Case ID

UpgradePreCheck

Test Case NameVerify UpgradePreCheck API of SDNC
ReleaseDublin
Pre-conditionsInitial State
Testing Steps


Command
curl -s -u 'admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U' -H "content-type: application/json" -H "accept: application/json" -X POST http://sdnc.onap:8282/restconf/operations/LCM:upgrade-pre-check -d @upgrade-pre-check-input.json | python -m json.tool


The content of file upgrade-pre-check-input.json is as follows:

Input

{
"input": {
"action": "UpgradePreCheck",
"action-identifiers": {
"vnf-id": "5gDU0001"
},
"common-header": {
"api-ver": "2.00",
"flags": {
"force": "FALSE",
"mode": "NORMAL",
"ttl": 65000
},
"originator-id": "MSO",
"request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"timestamp": "2019-03-15T09:07:58.255Z"
},
"payload": "{\"pnf-flag\":\"true\", \"pnf-name\": \"5gDU0001\",\"pnfId\": \"5gDU0001\", \"ipaddress-v4-oam\": \"192.168.35.83\",\"oldSwVersion\": \"v1\", \"targetSwVersion\": \"v2\", \"ruleName\": \"r001\", \"Id\": \"10\", \"additionalData\":\"{}\"}"
}
}


Output

{
"output": {
"common-header": {
"api-ver": "2.00",
"originator-id": "MSO",
"request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
},
"payload": "{\"result\": \"Success\"}",
"status": {
"code": 400,
"message": "Ansible Request f0f45105-1a51-4592-a31b-f178d5eb4638 finished with Result = success, Message = FINISHED"
}
}
}


Conclusion (Pass /Fail)PASS


Test Case ID

UpgradeSoftware

Test Case NameVerify UpgradeSoftware API of SDNC
ReleaseDublin
Pre-conditionsPreChecked
Testing Steps


Command
curl -s -u 'admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U' -H "content-type: application/json" -H "accept: application/json" -X POST http://sdnc.onap:8282/restconf/operations/LCM:upgrade-software -d @upgrade-software-input.json | python -m json.tool


The content of file upgrade-software-input.json is as follows:

Input

{
"input": {
"action": "UpgradeSoftware",
"action-identifiers": {
"vnf-id": "5gDU0001"
},
"common-header": {
"api-ver": "2.00",
"flags": {
"force": "FALSE",
"mode": "NORMAL",
"ttl": 65000
},
"originator-id": "MSO",
"request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"timestamp": "2019-03-15T09:07:58.255Z"
},
"payload": "{\"pnf-flag\":\"true\", \"pnfId\": \"5gDU0001\", \"ipaddress-v4-oam\": \"192.168.35.83\", \"targetSwVersion\": \"\\\\'[{\\\\\\\"swLocation\\\\\\\": \\\\\\\"http://192.168.35.144:10080/ran_du_pkg1-v2.zip\\\\\\\", \\\\\\\"swFileSize\\\\\\\": 353, \\\\\\\"swFileCompression\\\\\\\": \\\\\\\"ZIP\\\\\\\", \\\\\\\"swFileFormat\\\\\\\": \\\\\\\"zip\\\\\\\"}, {\\\\\\\"swLocation\\\\\\\": \\\\\\\"http://192.168.35.144:10080/ran_du_pkg2-v2.zip\\\\\\\", \\\\\\\"swFileSize\\\\\\\": 353, \\\\\\\"swFileCompression\\\\\\\": \\\\\\\"ZIP\\\\\\\", \\\\\\\"swFileFormat\\\\\\\": \\\\\\\"zip\\\\\\\"}]\\\\'\"}"
}
}


Output

{
"output": {
"common-header": {
"api-ver": "2.00",
"originator-id": "MSO",
"request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
},
"status": {
"code": 400,
"message": "Ansible Request a3962a33-86ba-4346-8ef2-e2890d1ba734 finished with Result = success, Message = FINISHED"
}
}
}


Conclusion (Pass /Fail)PASS


Test Case ID

UpgradePostCheck

Test Case NameVerify UpgradePostCheck API of SDNC
ReleaseDublin
Pre-conditionsUpgraded
Testing Steps


Command
curl -s -u 'admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U' -H "content-type: application/json" -H "accept: application/json" -X POST http://sdnc.onap:8282/restconf/operations/LCM:upgrade-post-check -d @upgrade-post-check-input.json | python -m json.tool


The content of file upgrade-post-check-input.json is as follows:

Input

{
"input": {
"action": "UpgradePostCheck",
"action-identifiers": {
"vnf-id": "5gDU0001"
},
"common-header": {
"api-ver": "2.00",
"flags": {
"force": "FALSE",
"mode": "NORMAL",
"ttl": 65000
},
"originator-id": "MSO",
"request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"timestamp": "2019-02-23T09:07:58.255Z"
},
"payload": "{\"pnf-flag\":\"true\", \"pnf-name\": \"5gDU0001\",\"pnfId\": \"5gDU0001\", \"ipaddress-v4-oam\": \"192.168.35.83\",\"oldSwVersion\": \"v1\", \"targetSwVersion\": \"v2\", \"ruleName\": \"r102\", \"Id\": \"10\", \"additionalData\":\"{}\"}"
}
}


Output

{
"output": {
"common-header": {
"api-ver": "2.00",
"originator-id": "MSO",
"request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
},
"payload": "{\"result\": \"Success\"}",
"status": {
"code": 400,
"message": "Ansible Request c1c14dee-a80d-40b8-800a-9216a27c7d1c finished with Result = success, Message = FINISHED"
}
}
}


Conclusion (Pass /Fail)PASS


Test Case ID

Rollback

Test Case NameVerify Rollback API of SDNC
ReleaseDublin
Pre-conditionsUpgrade Success or Upgrade Failure
Testing Steps


Command
curl -s -u 'admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U' -H "content-type: application/json" -H "accept: application/json" -X POST http://sdnc.onap:8282/restconf/operations/LCM:rollback -d @rollback-input.json | python -m json.tool


The content of file rollback-input.json is as follows:

Input

{
"input": {
"action": "Rollback",
"action-identifiers": {
"vnf-id": "5gDU0001"
},
"common-header": {
"api-ver": "2.00",
"flags": {
"force": "FALSE",
"mode": "NORMAL",
"ttl": 65000
},
"originator-id": "MSO",
"request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"timestamp": "2019-03-15T09:07:58.255Z"
},
"payload": "{\"pnf-flag\":\"true\", \"ipaddress-v4-oam\": \"192.168.35.83\", \"filter\": \"\\\\'$..[?(@.nEIdentification == \\\\\\\"5gDU0001\\\\\\\")]\\\\'\"}"
}
}




Output

{
"output": {
"common-header": {
"api-ver": "2.00",
"originator-id": "MSO",
"request-id": "a1171d12-2ae9-496b-a2df-99784572914d",
"sub-request-id": "a1171d12-2ae9-496b-a2df-99784572914d"
},
"payload": "{\"nEList\": [{\"nEIdentification\": \"5gDU0001\", \"swFallbackStatus\": \"fallbackSuccessful\"}], \"result\": \"Success\"}",
"status": {
"code": 400,
"message": "Ansible Request 2e0690ed-6b7a-43b1-a061-8e4ac7534609 finished with Result = success, Message = FINISHED"
}
}
}


Conclusion (Pass /Fail)PASS