From aeec4b24ce9d486b1e34332ccae00bba8e6124f8 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Tue, 20 Aug 2024 15:30:37 +0500 Subject: [PATCH 01/30] Update SOL003 document version in all testcases of VNFLifecycleManagement API --- .../CancelOperationTask.robot | 14 +++---- .../CancelOperationWorkflow.robot | 4 +- .../ChangeCurrentVNFPackageTask.robot | 12 +++--- .../ChangeExternalVNFConnectivityTask.robot | 10 ++--- ...hangeExternalVNFConnectivityWorkflow.robot | 2 +- .../ChangeVNFFlavourTask.robot | 14 +++---- .../ChangeVNFFlavourWorkflow.robot | 2 +- .../CreateVNFSnapshotTask.robot | 16 ++++---- .../CreateVNFWorkflow.robot | 2 +- .../DeleteVNFWorkflow.robot | 2 +- .../FailOperationTask.robot | 14 +++---- .../FailOperationWorkflow.robot | 2 +- .../HealVNFTask.robot | 14 +++---- .../HealVNFWorkflow.robot | 2 +- .../IndividualSubscription.robot | 12 +++--- .../IndividualVNFInstance.robot | 18 ++++----- .../IndividualVNFSnapshot.robot | 18 ++++----- .../IndividualVnfLcmOperationOccurence.robot | 12 +++--- .../InstantiateVNFTask.robot | 12 +++--- .../InstantiateVNFTaskWorkflow.robot | 6 +-- .../ModifyVNFInformationWorkflow.robot | 2 +- .../NotificationEndpoint.robot | 6 +-- .../Notifications.robot | 8 ++-- .../OperateVNFTask.robot | 14 +++---- .../OperateVNFWorkflow.robot | 2 +- .../RetryOperationTask.robot | 14 +++---- .../RetryOperationWorkflow.robot | 4 +- .../RevertToVNFSnapshotTask.robot | 14 +++---- .../RollBackOperationWorkflow.robot | 4 +- .../RollbackOperationTask.robot | 14 +++---- .../ScaleVNFTask.robot | 14 +++---- .../ScaleVNFToLevelTask.robot | 16 ++++---- .../ScaleVNFToLevelWorkflow.robot | 2 +- .../ScaleVNFWorkflow.robot | 2 +- .../Subscriptions.robot | 24 +++++------ .../TerminateVNFTask.robot | 12 +++--- .../TerminateVNFWorkflow.robot | 2 +- .../VNFInstances.robot | 40 +++++++++---------- .../VNFSnapshots.robot | 30 +++++++------- .../VNFStateSnapshot.robot | 18 ++++----- .../VnfLcmOperationOccurences.robot | 30 +++++++------- 41 files changed, 230 insertions(+), 230 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index 5482d601..eccb1e68 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -12,7 +12,7 @@ POST Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance status equal to FAILED_TEMP @@ -25,7 +25,7 @@ POST Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state ... Pre-conditions: The "VNF LCM operation occurrence" is not in STARTING, PROCESSING or ROLLING_BACK state - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Cancel operation task Not Found ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot index f0dd71e4..393779ec 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot @@ -18,7 +18,7 @@ Cancel a VNF LCM Operation - STARTING ... Test title: Cancel a VNF LCM Operation - STARTING ... Test objective: The objective is to test the workflow for Cancelling a VNF LCM Operation being in the STARTING state ... Pre-conditions: The VNF lifecycle management operation occurrence is in STARTING state. NFVO is subscribed to VNF LCM Operation Occurrence notifications (Test ID 5.4.20.1) - ... Reference: Clause 5.4.17 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state @@ -34,7 +34,7 @@ Cancel a VNF LCM Operation - PROCESSING - ROLLING_BACK ... Test title: Cancel a VNF LCM Operation - PROCESSING - ROLLING_BACK ... Test objective: The objective is to test the workflow for Cancelling a VNF LCM Operation being either in the PROCESSIONG or ROLLING_BACK state ... Pre-conditions: The VNF lifecycle management operation occurrence is in PROCESSING or ROLLING_BACK state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index e9569984..e6eef538 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -13,7 +13,7 @@ POST Change current VNF Package Task ... Test title: POST Change current VNF Package Task ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change current VNF Package Task - Conflict ... Test title: POST Change current VNF Package Task - Conflict ... Test objective: The objective is to test that the POST method cannot change the current VNF package task when another lifecycle management operation is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: There is another lifecycle management operation ongoing. ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Change current VNF Package Task - Method not implemented ... Test title: GET Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Change current VNF Package Task - Method not implemented ... Test title: PUT Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Change current VNF Package Task - Method not implemented ... Test title: PATCH Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Change current VNF Package Task - Method not implemented ... Test title: DELETE Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 5c6a9b2d..434d1a5d 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -12,7 +12,7 @@ POST Change external VNF connectivity ... Test title: POST Change external VNF connectivity ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ GET Change external VNF connectivity - Method not implemented ... Test title: GET Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT Change external VNF connectivity - Method not implemented ... Test title: PUT Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH Change external VNF connectivity - Method not implemented ... Test title: PATCH Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE Change external VNF connectivity - Method not implemented ... Test title: DELETE Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot index f419f744..29b1c2b5 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot @@ -17,7 +17,7 @@ Change external connectivity of VNF Workflow ... Test title: Change external connectivity of VNF Workflow ... Test objective: The objective is to change the external connectivity of a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.4.11 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. The VNFD supports the external connectivity change ... Post-Conditions: VNF instance still in INSTANTIATED state and external connectivity of the VNF is changed diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index c0ea9230..2cf454be 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -12,7 +12,7 @@ POST Change deployment flavour of a vnfInstance ... Test title: POST Change deployment flavour of a vnfInstance ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource. (VNF instance resource is not in NOT-INSTANTIATED state) ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Test title: POST Change deployment flavour of a vnfInstance Not Found ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Change deployment flavour VNFInstance - Method not implemented ... Test title: GET Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Change deployment flavour VNFInstance - Method not implemented ... Test title: PUT Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Change deployment flavour VNFInstance - Method not implemented ... Test title: PATCH Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Test title: DELETE Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot index 178c9591..ec093fd6 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot @@ -17,7 +17,7 @@ Change VNF Flavour Workflow ... Test title: Change VNF Flavour Workflow ... Test objective: The objective is to test the workflow for a change flavour of an existing VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state . NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.7 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: Multiple flavours are supported for the VNF (as capability in the VNFD). NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance still in INSTANTIATED state and the flavour is changed diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index ad90d751..ecfe31df 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -13,7 +13,7 @@ POST Create VNF Snapshot Task ... Test title: POST Create VNF Snapshot Task ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Create VNF Snapshot Task - NOT FOUND ... Test title: POST Create VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request for a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: Task is not supported for the VNF instance represented by the parent resource. ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Create VNF Snapshot Task - CONFLICT ... Test title: POST Create VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNF instance is in NOT_INSTANTIATED state. ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Create VNF Snapshot Task - Unprocessable Content ... Test title: POST Create VNF Snapshot Task - Unprocessable Content ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the provided identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Create VNF Snapshot Task - Method not implemented ... Test title: GET Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PUT Create VNF Snapshot Task - Method not implemented ... Test title: PUT Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Create VNF Snapshot Task - Method not implemented ... Test title: PATCH Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE Create VNF Snapshot Task - Method not implemented ... Test title: DELETE Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot index 96ff1013..33167b5d 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot @@ -17,7 +17,7 @@ Create VNF Instance Resource ... Test title: Create VNF Instance workflow ... Test objective: The objective is to test the workflow for the creation of a new VNF instance resource. ... Pre-conditions: NFVO is subscribed to VNF Identifier Creation notifications - ... Reference: Clause 5.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF instance resource has been created in "NOT_INSTANTIATED" state. diff --git a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot index 243b8c1f..c75a6ee3 100644 --- a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot @@ -17,7 +17,7 @@ Delete VNF Instance Resource ... Test title: Delete VNF Instance workflow ... Test objective: The objective is to test the workflow for the deleteion of an existing VNF instance resource ... Pre-conditions: The VNF Instance resource is in NOT_INSTANTIATED state. NFVO is subscribed to VNF Identifier Creation notifications - ... Reference: Clause 5.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF instance resource is deleted on the VNFM. diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index ad99f5a2..604c15bd 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -12,7 +12,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF resource state is FINALLY_FAILED @@ -26,7 +26,7 @@ Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test title: Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Post Fail operation task Not Found ... Test title: Post Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -64,7 +64,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -76,7 +76,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -88,7 +88,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot index 5f2b0b7f..ce239c6e 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot @@ -17,7 +17,7 @@ Fail a VNF LCM Operation Workflow ... Test title: Fail a VNF LCM Operation Workflow ... Test objective: The objective is to test the workflow for a Fail VNF LCM Operation ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.16 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED state diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index acdca8ae..8cdfb001 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -12,7 +12,7 @@ POST Heal a vnfInstance ... Test title: POST Heal a vnfInstance ... Test objective: The objective is to test that POST method heal a VNF instance ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Heal a vnfInstance Not Found ... Test title: POST Heal a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Heal VNFInstance - Method not implemented ... Test title: GET Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Heal VNFInstance - Method not implemented ... Test title: PUT Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Heal VNFInstance - Method not implemented ... Test title: PATCH Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Heal VNFInstance - Method not implemented ... Test title: DELETE Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot index 7e5981a3..2f6fa856 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot @@ -17,7 +17,7 @@ Heal a VNF Instance ... Test title: Heal a VNF Instance ... Test objective: The objective is to heal a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.4.9 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Heal a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index bbe48b8e..5585c8d1 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the Get individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription deleted from VNFM @@ -72,7 +72,7 @@ GET Individual Subscription - Not Found ... Test title: GET Individual Subscription - Not Found ... Test objective: The objective is to test the retrieval of individual subscription fails when subscription is not present ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index f9c88f3d..1be74b1d 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -16,7 +16,7 @@ Post Individual VNFInstance - Method not implemented ... Test title: Post Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ Get Information about an individual VNF Instance ... Test title: Get Information about an individual VNF Instance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ PUT Individual VNFInstance - Method not implemented ... Test title: PUT Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ PATCH Individual VNFInstance ... Test title: PATCH Individual VNFInstance ... Test objective: This method modifies an individual VNF instance resource ... Pre-conditions: an existing VNF instance resource - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance modified @@ -68,7 +68,7 @@ PATCH Individual VNFInstance Precondition failed ... Test title: PATCH Individual VNFInstance Precondition failed ... Test objective: The objective is to test that modification of a VNF instance resource fails when a precondition given in an HTTP request header is not fulfilled due to an ETag mismatch ... Pre-conditions: an existing VNF instance resource - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ PATCH Individual VNFInstance Conflict ... Test title: PATCH Individual VNFInstance Conflict ... Test objective: The objective is to test the conflict while modifying a VNF instance resource ... Pre-conditions: another LCM operation is ongoing - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance not modified @@ -94,7 +94,7 @@ DELETE Individual VNFInstance ... Test title: DELETE Individual VNFInstance ... Test objective: The objective is to delete a VNF instance ... Pre-conditions: the VNF instance resource is existing - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance deleted @@ -106,7 +106,7 @@ DELETE Individual VNFInstance Conflict ... Test title: DELETE Individual VNFInstance Conflict ... Test objective: The objective is to verify that the deletion cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resources are not deleted @@ -120,7 +120,7 @@ Get Information about an individual VNF Instance - Not Found ... Test title: Get Information about an individual VNF Instance - Not Found ... Test objective: The objective is to test that the retrieval of an individual VNF Instance fails when instance is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index 6242a630..f4647a03 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot - Method not implemented ... Test title: POST Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test objective: The objective is to GET information about an individual VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET Information about an individual VNF Snapshot - NOT FOUND ... Test title: GET Information about an individual VNF Snapshot - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot fails when using an invalid resource identifier. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ PUT Individual VNF Snapshot - Method not implemented ... Test title: PUT Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF Snapshot not modified @@ -58,7 +58,7 @@ PATCH Individual VNF Snapshot - Success ... Test title: PATCH Individual VNF Snapshot - Success ... Test objective: The objective is to test that PATCH method successfully modifies an individual VNF Snapshot resource ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF Snapshot modified @@ -72,7 +72,7 @@ PATCH Individual VNF Snapshot - Conflict ... Test title: PATCH Individual VNF Snapshot - Success ... Test objective: The objective is to test that PATCH method cannot modify an individual VNF Snapshot resource due to the fact that another modification is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The Individual VNF Snapshot resource is currently being modified due to an underlying VNF snapshot operation. ... Post-Conditions: none @@ -85,7 +85,7 @@ PATCH Individual VNF Snapshot - Precondition Failed ... Test title: PATCH Individual VNF Snapshot - Precondition Failed ... Test objective: The objective is to that the modification of individual VNF Snapshot fails because precondition given in an HTTP request header is not fulfilled due to an ETag mismatch. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF snapshot is not modified @@ -98,7 +98,7 @@ DELETE Individual VNF Snapshot ... Test title: DELETE Individual VNF Snapshot ... Test objective: The objective is to delete a VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF Snapshot deleted @@ -111,7 +111,7 @@ DELETE Individual VNF Snapshot - Conflict ... Test title: DELETE Individual VNF Snapshot Conflict ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF Snapshot resource. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNF snapshot is in use by some operation such as reverting a VNF instance to a VNF snapshot or creating a VNF snapshot package. ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 73ab723f..8288f8d2 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -11,7 +11,7 @@ Post Individual VNF LCM Operation occurrences - Method not implemented ... Test title: Post Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Individual VNF LCM Operation occurrences ... Test title: Get Individual VNF LCM Operation occurrences ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Individual VNF LCM Operation occurrences - Method not implemented ... Test title: PUT Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test title: PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE Individual VNF LCM Operation occurrences - Method not implemented ... Test title: DELETE Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ Get Individual VNF LCM Operation occurrences - Not Found ... Test title: Get Individual VNF LCM Operation occurrences - Not Found ... Test objective: The objective is to test that the retrieval of VNF lifecycle management operation occurrence fails when instance is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 0d1d1acd..daa2dcae 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -13,7 +13,7 @@ Instantiate a vnfInstance ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Instantiate a vnfInstance Conflict ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Instantiate VNFInstance - Method not implemented ... Test title: GET Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Instantiate VNFInstance - Method not implemented ... Test title: PUT Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Instantiate VNFInstance - Method not implemented ... Test title: PATCH Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Instantiate VNFInstance - Method not implemented ... Test title: DELETE Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index db6caddb..36ff993a 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -20,7 +20,7 @@ VNF Instantiation ... Test title: VNF Instantiation workflow ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state @@ -38,7 +38,7 @@ VNF Instantiation with attribute instantiationLevelId ... Test title: VNF Instantiation workflow with attribute instantiationLevelId ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state @@ -56,7 +56,7 @@ VNF Instantiation with attribute targetScaleLevelInfo ... Test title: VNF Instantiation workflow with attribute targetScaleLevelInfo ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot index e700d2ca..0094b3c2 100644 --- a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot @@ -17,7 +17,7 @@ Modify info of a VNF Instance ... Test title: Update information about a VNF instance ... Test objective: The objective is to update information about a VNF instance. ... Pre-conditions: VNF instance is created - ... Reference: Clause 5.3.6 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.6 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Update information of a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance info is updated diff --git a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot index 81a032c2..f114036d 100644 --- a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Notification ... Test title: VNF LCM Operation Occurrence Notification ... Test objective: The objective is to test that the POST request triggers VNF LCM Operation Occurrence Notification. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test that the POST request triggers VNF Identifier Creation Notification. ... Pre-conditions: A subscription for VNF identifier creation cotification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test that the POST request triggers VNF Identifier Deletion Notification. ... Pre-conditions: A subscription for VNF identifier deletion notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/Notifications.robot b/SOL003/VNFLifecycleManagement-API/Notifications.robot index 6f1a0c07..f29f871b 100644 --- a/SOL003/VNFLifecycleManagement-API/Notifications.robot +++ b/SOL003/VNFLifecycleManagement-API/Notifications.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Start Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Start Notification when a new VNF LCM operation is started in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ VNF LCM Operation Occurrence Result Notification ... Test title: VNF LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Result Notification when a VNF LCM operation is completed in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An VNF LCM operation is in progress, and a subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Creation Notification when a new VNF instance resource is created in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Deletion Notification when a VNF instance resource is deleted in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance resource is created, and a subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index f3b492c2..7f2f923e 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -14,7 +14,7 @@ POST Operate a vnfInstance ... Test title: POST Operate a vnfInstance ... Test objective: The objective is to test that POST method operate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Operate a vnfInstance Not Found ... Test title: POST Operate a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed currently, because the resource is not existing ... Pre-conditions: the VNF instance resource is in not existing - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Operate VNFInstance - Method not implemented ... Test title: GET Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Operate VNFInstance - Method not implemented ... Test title: PUT Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Operate VNFInstance - Method not implemented ... Test title: PATCH Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Operate VNFInstance - Method not implemented ... Test title: DELETE Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot index 8927ca37..d6eeed1c 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot @@ -18,7 +18,7 @@ Operate a VNF Instance ... Test title: Operate a VNF Instance ... Test objective: The objective is to test the workflow of operational change of a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: change the operational state of a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and the operational state is changed diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index 3dea0a18..9f597eca 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -15,7 +15,7 @@ Post Retry operation task ... Test title: Post Retry operation task ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Post Retry operation task Conflict (Not-FAILED_TEMP) ... Test title: Post Retry operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that the retry operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. (i.e. the VNF instance resource is not in FAILED_TEMP state) ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Post Retry operation task Not Found ... Test title: Post Retry operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index 8573e199..0c40c970 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -15,7 +15,7 @@ Retry VNF LCM Operation - Successful ... Test title: Retry VNF LCM Operation - Successful ... Test objective: The objective is to test the workflow for a successful Retry VNF LCM Operation and the status notifications ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in COMPLETED state @@ -30,7 +30,7 @@ Retry VNF LCM Operation - Unsuccessful ... Test title: Retry VNF LCM Operation - Unsuccessful ... Test objective: The objective is to test the workflow for an unsuccesful Retry VNF LCM Operation and the status notifications ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index d822f3c2..06fbc49b 100644 --- a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -13,7 +13,7 @@ POST Revert to VNF Snapshot Task ... Test title: POST Revert to VNF Snapshot Task ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Revert to VNF Snapshot Task - NOT FOUND ... Test title: POST Revert to VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: Task is not supported for the VNF instance represented by the parent resource. ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Revert to VNF Snapshot Task - CONFLICT ... Test title: POST Revert to VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNF instance is in NOT_INSTANTIATED state. ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Revert to VNF Snapshot Task - Method not implemented ... Test title: GET Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Revert to VNF Snapshot Task - Method not implemented ... Test title: PUT Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Revert to VNF Snapshot Task - Method not implemented ... Test title: PATCH Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Revert to VNF Snapshot Task - Method not implemented ... Test title: DELETE Revert to sVNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index 7d12061f..d7c5083d 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -17,7 +17,7 @@ Rollback a VNF LCM Operation - Successful ... Test title: Rollback VNF LCM Operation - Successful ... Test objective: The objective is to test the workflow for a Rolling Back a VNF LCM Operation and the operation is successful ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.11 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.11 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state @@ -32,7 +32,7 @@ Rollback VNF LCM Operation - Unsuccessful ... Test title: Rollback VNF LCM Operation - Unsuccessful ... Test objective: The objective is to test the workflow for a Rollback VNF LCM Operation and the operation is not successful ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index 445bb0a5..fee1ca8c 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -14,7 +14,7 @@ Post Rollback operation task ... Test title: Post Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method initiates a rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index 8d0776e3..d9b537c3 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -13,7 +13,7 @@ POST Scale a vnfInstance ... Test title: POST Scale a vnfInstance ... Test objective: The objective is to scale a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, because the VNF instance resource is not found. ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Scale VNFInstance - Method not implemented ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Scale VNFInstance - Method not implemented ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Scale VNFInstance - Method not implemented ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Scale VNFInstance - Method not implemented ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 7f2fb029..3dcc0dc4 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -12,7 +12,7 @@ POST Scale a vnfInstance to level - with InstantiationLevelId attribute ... Test title: POST Scale a vnfInstance to level ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed because the resource is not instantiated ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Scale a vnfInstance Not Found ... Test title: Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed , because the VNF instance resource cannot be found. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Scale to level VNFInstance - Method not implemented ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Scale to level VNFInstance - Method not implemented ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Scale to level VNFInstance - Method not implemented ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Scale to level VNFInstance - Method not implemented ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Scale a vnfInstance to level - with scaleInfo attribute ... Test title: POST Scale a vnfInstance to level with scaleInfo attribute ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot index c515f53b..1635281a 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot @@ -15,7 +15,7 @@ VNF Instance Scale To Level ... Test title: VNF Instance Scale To Level workflow ... Test objective: The objective is to test the workflow for the scale to level of a VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state . NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.6 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Scale operation is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and VNF is scaled to the new level diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot index 73897ccd..e18f5b86 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot @@ -15,7 +15,7 @@ VNF Instance Scale Out ... Test title: VNF Instance Scale Out workflow ... Test objective: The objective is to test the workflow for the scaling out a VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state (Test ID 5.4.4.1). NFVO is subscribed to VNF LCM Operation Occurrence notifications (Test ID 5.4.20.1) - ... Reference: Clause 5.4.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Scale operation is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and VNF is scaled out diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index 81fabaf0..40e9624a 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The POST method creates a new subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -28,7 +28,7 @@ Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The objective is to test request to create a duplicate (same callbackurl and filter) subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: duplication is supported by SUT ... Post-Conditions: in response header Location shall not be null @@ -41,7 +41,7 @@ Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The objective is to test the request that does not create a duplicate (same callbackurl and filter) subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: duplication is not supported by SUT ... Post-Conditions: in response header Location shall not be null @@ -54,7 +54,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Subscription - Filter ... Test title: GET Subscriptions - Filter ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using an invalid filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -162,7 +162,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ GET Subscriptions as a Paged Response ... Test title: GET Subscriptions as a Paged Response ... Test objective: The objective is Get the list of active subscriptions as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none @@ -187,7 +187,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of the list of active subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter ... Test title: GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to Get the list of active subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving subscriptions as a paged response has been successfully issued (Test ID 7.3.1.17.14) - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index b21a1301..23fad768 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -13,7 +13,7 @@ POST Terminate a vnfInstance ... Test title: POST Terminate a vnfInstance ... Test objective: The objective is to test that POST method terminate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the vnf Instance cannot be terminated ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Terminate VNFInstance - Method not implemented ... Test title: GET Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Terminate VNFInstance - Method not implemented ... Test title: PUT Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Terminate VNFInstance - Method not implemented ... Test title: PATCH Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Terminate VNFInstance - Method not implemented ... Test title: DELETE Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot index d458119a..7e71c073 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot @@ -15,7 +15,7 @@ Terminate a VNF Instance ... Test title: Terminate a VNF Instance ... Test objective: The objective is to terminate a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. ... Post-Conditions: VNF instance in NOT_INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index 3bb82db5..47bb2e9a 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -13,7 +13,7 @@ POST Create a new vnfInstance ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance created @@ -26,7 +26,7 @@ GET information about multiple VNF instances ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,8 +38,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based [Documentation] Test ID: 7.3.1.1.3 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to query information about multiple VNF instances with Invalid attribute-based filtering parameters - ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.4.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.5.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,8 +52,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec [Documentation] Test ID: 7.3.1.1.4 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector ... Test objective: The objective is to query information about multiple VNF instances with Invalid attribute selector - ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.4.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.5.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ GET information about multiple VNF instances with "all_fields" attribute selecto ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ GET information about multiple VNF instances with "exclude_default" attribute se ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ GET information about multiple VNF instances with "fields" attribute selector ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PUT multiples VNFInstances - Method not implemented ... Test title: PUT multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ PATCH multiples VNFInstances - Method not implemented ... Test title: PATCH multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ DELETE VNFInstances - Method not implemented ... Test title: DELETE multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ GET information about multiple VNF instances to get Paged Response ... Test title: GET information about multiple VNF instances to get Paged Response ... Test objective: The objective is to query information about multiple VNF instances to get Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none @@ -167,7 +167,7 @@ GET information about multiple VNF instances as a Paged Response with nextpage_o ... Test title: GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF instances as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving multiple VNF instances as a paged response has been successfully issued (Test ID 7.3.1.1.12) - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF instance resources ... Post-Conditions: none @@ -178,8 +178,8 @@ GET information about multiple VNF instances - Bad Request Response too Big [Documentation] Test ID: 7.3.1.1.13 ... Test title: GET information about multiple VNF instances - Bad Request Response too Big ... Test objective: The objective is to query information about multiple VNF instances fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. - ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.4.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.5.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ GET information about multiple VNF instances with "exclude_default" and "fields" ... Test title: GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -205,7 +205,7 @@ POST Create a new vnfInstance - Unprocessable Content ... Test title: POST Create a new vnfInstance - Unprocessable Content ... Test objective: The objective is to test that correct error code is returned when VNF package referenced by the "vnfdId" attribute in the "CreateVnfRequest" structure is not in the "ENABLED" state or does not exist. ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNF package referenced by the "vnfdId" attribute in the "CreateVnfRequest" structure is not in the "ENABLED" state or does not exist. ... Post-Conditions: none @@ -218,7 +218,7 @@ GET information about multiple VNF instances using Filter ... Test title: GET information about multiple VNF instances using Filter ... Test objective: The objective is to query information about multiple VNF instances using filter ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot index 031f8b86..a34e4fc8 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -7,7 +7,7 @@ POST Create a new VNF Snapshot ... Test title: POST Create a new VNF Snapshot ... Test objective: The objective is to create a new VNF snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF snapshot is created @@ -21,7 +21,7 @@ GET information about multiple VNF Snapshots ... Test title: GET information about multiple VNF Snapshots ... Test objective: The objective is to get information about multiples VNF snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -34,7 +34,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute-based ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -47,7 +47,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute selec ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ GET information about multiple VNF Snapshots with "all_fields" attribute selecto ... Test title: GET information about multiple VNF Snapshots with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ GET information about multiple VNF Snapshots with "exclude_default" attribute se ... Test title: GET information about multiple VNF Snapshots with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET information about multiple VNF Snapshots with "fields" attribute selector ... Test title: GET information about multiple VNF Snapshots with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ GET information about multiple VNF Snapshots with "exclude_default" and "fields" ... Test title: GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ GET information about multiple VNF Snapshots with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF Snapshots with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ GET VNF Snapshots - Bad Request Response too Big ... Test title: GET VNF Snapshots - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshots list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM does not support paged response. ... Post-Conditions: none @@ -138,7 +138,7 @@ GET VNF Snapshots as Paged Response ... Test title: GET VNF Snapshots as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshots as paged response. ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM supports paged response. ... Post-Conditions: none @@ -151,7 +151,7 @@ PUT VNF Snapshots - Method not implemented ... Test title: PUT VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -163,7 +163,7 @@ PATCH VNF Snapshots - Method not implemented ... Test title: PATCH VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -175,7 +175,7 @@ DELETE VNF Snapshots - Method not implemented ... Test title: DELETE VNF Snapshots - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance not deleted @@ -187,7 +187,7 @@ GET information about multiple VNF Snapshots using Filter ... Test title: GET information about multiple VNF Snapshots using Filter ... Test objective: The objective is to get information about multiples VNF snapshots using filter ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot index 670775da..67da2fae 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot @@ -7,7 +7,7 @@ POST VNF State Snapshot - Method not implemented ... Test title: POST VNF State Snapshot - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET VNF State Snapshot - Complete File ... Test title: GET Information about an individual VNF State Snapshot - Complete File ... Test objective: The objective is to fetch the whole content of a VNF State Snapshot using GET method. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET VNF State Snapshot - Partial Content ... Test title: GET VNF State Snapshot - Partial Content ... Test objective: The objective is to fetch partial content of a VNF State Snapshot by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM supports range requests ... Post-Conditions: none @@ -46,7 +46,7 @@ GET VNF State Snapshot - Range Request Not Supported ... Test title: GET VNF State Snapshot - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF State Snapshot is delivered even with a range request when VNFM does not support range requests. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET VNF State Snapshot - Range Not Satisfiable ... Test title: GET VNF State Snapshot - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF State Snapshot package file. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET VNF State Snapshot - Conflict ... Test title: GET VNF State Snapshot - Conflict ... Test objective: The objective is to test that an error is returned when there is a conflict with the state of the VNF snapshot resource. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: Typically, this is due to the fact that the VNF snapshot creation process is not completed. ... Post-Conditions: none @@ -84,7 +84,7 @@ PUT VNF State Snapshot - Method not implemented ... Test title: PUT VNF State Snapshot - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF State Snapshot Package not modified @@ -96,7 +96,7 @@ PATCH VNF State Snapshot - Method Not implemented ... Test title: PATCH VNF State Snapshot ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -108,7 +108,7 @@ DELETE VNF State Snapshot - Method Not implemented ... Test title: DELETE VNF State Snapshot - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index df021760..f3c71a9d 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -11,7 +11,7 @@ POST VNF LCM Operation occurrences - Method not implemented ... Test title: POST VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET status information about multiple VNF LCM Operation OCC ... Test title: GET status information about multiple VNF LCM Operation OCC ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ GET status information about multiple VNF LCM Operation OCC Bad Request Invalid ... Test title: GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ GET status information about multiple VNF LCM Operation OCC Bad Request Invalid ... Test title: GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ GET status information about multiple VNF LCM Operation OCC with "exlude_default ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ GET status information about multiple VNF LCM Operation OCC with "fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_fields ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ PUT status information about multiple VNF LCM Operation OCC - Method not impleme ... Test title: PUT status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ PATCH status information about multiple VNF LCM Operation OCC - Method not imple ... Test title: PATCH status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ DELETE status information about multiple VNF LCM Operation OCC - Method not impl ... Test title: DELETE status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ GET status information about multiple VNF LCM Operation OCC to get Paged Respons ... Test title: GET status information about multiple VNF LCM Operation OCC to get Paged Response ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences to get a Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF lifecycle management operation occurrences resources ... Post-Conditions: none @@ -163,7 +163,7 @@ GET information about multiple VNF LCM Operation OCC as a Paged Response with ne ... Test title: GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF lifecycle management operation occurrences as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving multiple VNF lifecycle management operation occurrences as a paged response has been successfully issued (Test ID 7.3.1.11.12) - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF lifecycle management operation occurrences resources ... Post-Conditions: none @@ -175,7 +175,7 @@ GET status information about multiple VNF LCM Operation OCC - Bad Request Respon ... Test title: GET status information about multiple VNF LCM Operation OCC - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_defaul ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 3d6ff2e1b172a32ddd630c211c624f90ebc89419 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Wed, 21 Aug 2024 10:36:21 +0500 Subject: [PATCH 02/30] Update vnfinstance datamodel as per clause 5.5.2.2 --- .../schemas/vnfInstance.schema.json | 887 +++++++++++++++--- .../schemas/vnfInstances.schema.json | 874 ++++++++++++++--- 2 files changed, 1531 insertions(+), 230 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 23b24a03..eb40fb23 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -54,7 +54,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -85,7 +87,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -116,7 +120,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -141,15 +147,299 @@ } } }, + "certificateInfo": { + "description": "This type provides input information related to certificate and certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateConfigurationInfo": { + "description": "This type provides input information related to certificate management.\n", + "type": "object", + "required": [ + "securityPolicy" + ], + "properties": { + "certificateBaseProfile": { + "description": "Information for certificate profile.", + "type": "array", + "items": { + "description": "NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\nThis type provides input information to override certificate base profile for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of certificates. See note.", + "type": "string" + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to the subject of the certificate.\nNOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of the certification target subject FQDN. Can be set empty when this certificate is used for encrypted communication using IP address. See note.\n", + "type": "string" + }, + "organization": { + "description": "Information of the certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of the certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of the certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of the certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of the certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "description": "Basic constraints of certificates. See note.", + "type": "string" + }, + "issuerAltName": { + "description": "Alternative name of issuer of certificates in this NS. See note.", + "type": "array", + "items": { + "type": "string" + } + }, + "subjectAltName": { + "description": "Alternative name of subject of certificates. Shall be present when this certificate is used for encrypted communication using IP address and subjectAltName attribute of CertificateBaseProfile in CertificateDesc of VNFD is empty (see ETSI GS NFV-IFA 011 [14], clause 7.1.19.4). See note.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "nameConstraints": { + "description": "Name constraints of certificates. See note.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.", + "type": "array", + "items": { + "description": "This type provides input information related to security policy for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "Allowed max validity period for certificates.", + "type": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "number" + } + } + } + }, + "delegationSupportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "cmfInfo": { + "description": "This type provides input information related to CMF for certificate management.\n", + "type": "object", + "required": [ + "id", + "endPoint", + "supportedProtocol" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "endPoint": { + "description": "End point of CMF instance.", + "type": "object", + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "link": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "supportedProtocol": { + "description": "Supported protocols by CMF instance.", + "type": "array", + "items": { + "description": "Supported protocol by CMF instance.", + "type": "string", + "enum": [ + "CMP", + "CMPv2", + "EST", + "SCEP" + ] + } + }, + "certificateChain": { + "description": "Certificate chain that this CMF provides.", + "type": "array", + "items": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "certificateContents": { + "description": "Information for contents of issued certificates. The information contained in this attribute may be updated over time during the VNF LCM, e.g., certificate(s) renewal.\n", + "type": "array", + "items": { + "description": "This type provides input information related to certificate content.\nNOTE: The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011 [10].\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate.", + "type": "string", + "enum": [ + "VNFCI_CERT", + "VNFOAM_CERT" + ] + }, + "supportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "version": { + "description": "A version.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate.", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate's signature.", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate's public key.", + "type": "string" + }, + "publicKey": { + "description": "Public key of this certificate.", + "type": "string" + }, + "certificateExtensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, "instantiationState": { "description": "The instantiation state of the VNF. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", "type": "string", - "enum": ["NOT_INSTANTIATED", "INSTANTIATED"] + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] }, "instantiatedVnfInfo": { "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", "type": "object", - "required": ["flavourId", "vnfState", "extCpInfo"], + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], "properties": { "flavourId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -158,7 +448,10 @@ "vnfState": { "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", "type": "string", - "enum": ["STARTED", "STOPPED"] + "enum": [ + "STARTED", + "STOPPED" + ] }, "scaleStatus": { "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", @@ -166,7 +459,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -189,7 +485,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -206,6 +505,14 @@ } } }, + "selectedDeployableModule": { + "description": "References a currently selected deployable module, as defined in the VNFD, that has already completed the instantiation of its VNFCs.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, "extCpInfo": { "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", "type": "array", @@ -213,16 +520,27 @@ "items": { "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "cpdId", "cpConfigId", "cpProtocolInfo"], + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], "oneOf": [ { - "required": ["associatedVnfcCpId"] + "required": [ + "associatedVnfcCpId" + ] }, { - "required": ["associatedVipCpId"] + "required": [ + "associatedVipCpId" + ] }, { - "required": ["associatedVnfVirtualLinkId"] + "required": [ + "associatedVnfVirtualLinkId" + ] } ], "properties": { @@ -248,30 +566,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -289,12 +620,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -312,7 +648,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -338,12 +677,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -390,6 +734,10 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -401,7 +749,10 @@ "items": { "description": "This type provides information related to virtual IP (VIP) CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["cpInstanceId", "cpdId"], + "required": [ + "cpInstanceId", + "cpdId" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -425,30 +776,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -466,12 +830,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -489,7 +858,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -515,12 +887,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -561,7 +938,12 @@ "items": { "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", "type": "object", - "required": ["cpInstanceId", "cpdId", "resourceHandle", "vduIds"], + "required": [ + "cpInstanceId", + "cpdId", + "resourceHandle", + "vduIds" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -572,7 +954,9 @@ "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -626,30 +1010,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -667,12 +1064,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -690,7 +1092,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -716,12 +1121,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -752,7 +1162,9 @@ "items": { "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", "type": "object", - "required": ["portInfo"], + "required": [ + "portInfo" + ], "properties": { "portInfo": { "description": "Service port numbers exposed by the virtual CP instance.\n", @@ -761,7 +1173,11 @@ "items": { "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", "type": "object", - "required": ["name", "port", "portConfigurable"], + "required": [ + "name", + "port", + "portConfigurable" + ], "properties": { "name": { "description": "The name of the port exposed by the virtual CP instance.\n", @@ -770,7 +1186,11 @@ "protocol": { "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", "type": "string", - "enum": ["TCP", "UDP", "SCTP"] + "enum": [ + "TCP", + "UDP", + "SCTP" + ] }, "port": { "description": "The L4 port number exposed by the virtual CP instance.\n", @@ -803,14 +1223,20 @@ "items": { "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", - "required": ["id", "resourceHandle", "currentVnfExtCpData"], + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -860,14 +1286,19 @@ "items": { "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -932,7 +1363,9 @@ "items": { "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", "type": "object", - "required": ["cpdId"], + "required": [ + "cpdId" + ], "properties": { "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -945,13 +1378,19 @@ "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { - "required": ["linkPortId"] + "required": [ + "linkPortId" + ] }, { - "required": ["cpProtocolData"] + "required": [ + "cpProtocolData" + ] }, { - "required": ["netAttDefResourceId"] + "required": [ + "netAttDefResourceId" + ] } ], "type": "object", @@ -982,7 +1421,9 @@ "items": { "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", @@ -997,21 +1438,31 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["fixedAddresses"] + "required": [ + "fixedAddresses" + ] }, { - "required": ["numDynamicAddresses"] + "required": [ + "numDynamicAddresses" + ] }, { - "required": ["ipAddressRange"] + "required": [ + "ipAddressRange" + ] } ], "properties": { @@ -1023,7 +1474,10 @@ "segmentationType": { "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", - "enum": ["VLAN", "INHERIT"] + "enum": [ + "VLAN", + "INHERIT" + ] }, "segmentationId": { "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", @@ -1034,12 +1488,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "fixedAddresses": { "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1086,12 +1545,17 @@ "virtualCpAddress": { "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1119,14 +1583,19 @@ "items": { "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", "type": "object", - "required": ["netAttDefResourceInfoId", "netAttDefResource"], + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], "properties": { "netAttDefResourceInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1197,7 +1666,11 @@ "type": "array", "items": { "type": "object", - "required": ["id", "vnfVirtualLinkDescId", "networkResource"], + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -1212,7 +1685,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1262,14 +1737,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1320,7 +1800,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1339,14 +1822,19 @@ "items": { "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", "type": "object", - "required": ["netAttDefResourceInfoId", "netAttDefResource"], + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], "properties": { "netAttDefResourceInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1421,7 +1909,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "performanceMetric"], + "required": [ + "id", + "performanceMetric" + ], "properties": { "id": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -1452,7 +1943,11 @@ "items": { "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "vduId", "computeResource"], + "required": [ + "id", + "vduId", + "computeResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1467,7 +1962,9 @@ "type": "string" }, "computeResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1532,7 +2029,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "cpdId"], + "required": [ + "id", + "cpdId" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1552,30 +2052,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -1593,12 +2106,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1616,7 +2134,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1642,12 +2163,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1682,6 +2208,10 @@ "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -1689,6 +2219,10 @@ "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -1699,7 +2233,11 @@ "items": { "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires including\n a related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the\n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["id", "vnfVirtualLinkDescId", "networkResource"], + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1714,7 +2252,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1772,14 +2312,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1830,7 +2375,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1856,7 +2404,11 @@ "items": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence\n notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["id", "virtualStorageDescId", "storageResource"], + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1871,7 +2423,9 @@ "type": "string" }, "storageResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1970,7 +2524,10 @@ "mcioType": { "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", "type": "string", - "enum": ["Deployment", "StatefulSet"] + "enum": [ + "Deployment", + "StatefulSet" + ] }, "desiredInstances": { "description": "Number of desired MCIO instances.\n", @@ -1980,6 +2537,76 @@ "description": "Number of available MCIO instances.\n", "type": "integer" }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfPaasServiceInfo": { + "description": "Information on the PaaS Services assigned and used by the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides input information about a PaaS Service that is used by a VNF instance. The PaasServiceInfo is comprised of various sets of information. Some information comes from the VNFD, other information comes from the PaaS Service assets provided by the NFVO to the VNFM, and other information is provided at runtime information about the usage of the PaaS Service.\n", + "type": "object", + "required": [ + "id", + "paasServiceId", + "paasServiceType", + "paasServiceRequestId", + "paasServiceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceType": { + "description": "The type of PaaS Service. The value of this attribute is expected to be matched against values of the registered PaaS Services in the PSR.", + "type": "string" + }, + "paasServiceVersion": { + "description": "A version.\n", + "type": "string" + }, + "paasServiceRequestId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "paasServiceHandle": { + "description": "This type provides information enabling the access and use of the PaaS Service by the VNF instance. The type and format of the handle depends on the form that the PaaS Service is formed.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, "additionalInfo": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" @@ -2000,12 +2627,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2016,7 +2647,9 @@ "indicators": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2027,7 +2660,9 @@ "instantiate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2038,7 +2673,9 @@ "terminate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2049,7 +2686,9 @@ "scale": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2060,7 +2699,9 @@ "scaleToLevel": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2071,7 +2712,9 @@ "changeFlavour": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2082,7 +2725,9 @@ "heal": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2093,7 +2738,9 @@ "operate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2104,7 +2751,9 @@ "changeExtConn": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2115,7 +2764,9 @@ "createSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2126,7 +2777,9 @@ "revertToSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2137,7 +2790,9 @@ "changeCurrentVnfPkg": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 6abfe683..17993b9c 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -56,7 +56,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -87,7 +89,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -118,7 +122,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -143,15 +149,299 @@ } } }, + "certificateInfo": { + "description": "This type provides input information related to certificate and certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateConfigurationInfo": { + "description": "This type provides input information related to certificate management.\n", + "type": "object", + "required": [ + "securityPolicy" + ], + "properties": { + "certificateBaseProfile": { + "description": "Information for certificate profile.", + "type": "array", + "items": { + "description": "NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\nThis type provides input information to override certificate base profile for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of certificates. See note.", + "type": "string" + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to the subject of the certificate.\nNOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of the certification target subject FQDN. Can be set empty when this certificate is used for encrypted communication using IP address. See note.\n", + "type": "string" + }, + "organization": { + "description": "Information of the certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of the certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of the certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of the certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of the certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "description": "Basic constraints of certificates. See note.", + "type": "string" + }, + "issuerAltName": { + "description": "Alternative name of issuer of certificates in this NS. See note.", + "type": "array", + "items": { + "type": "string" + } + }, + "subjectAltName": { + "description": "Alternative name of subject of certificates. Shall be present when this certificate is used for encrypted communication using IP address and subjectAltName attribute of CertificateBaseProfile in CertificateDesc of VNFD is empty (see ETSI GS NFV-IFA 011 [14], clause 7.1.19.4). See note.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "nameConstraints": { + "description": "Name constraints of certificates. See note.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.", + "type": "array", + "items": { + "description": "This type provides input information related to security policy for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "Allowed max validity period for certificates.", + "type": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "number" + } + } + } + }, + "delegationSupportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "cmfInfo": { + "description": "This type provides input information related to CMF for certificate management.\n", + "type": "object", + "required": [ + "id", + "endPoint", + "supportedProtocol" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "endPoint": { + "description": "End point of CMF instance.", + "type": "object", + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "link": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "supportedProtocol": { + "description": "Supported protocols by CMF instance.", + "type": "array", + "items": { + "description": "Supported protocol by CMF instance.", + "type": "string", + "enum": [ + "CMP", + "CMPv2", + "EST", + "SCEP" + ] + } + }, + "certificateChain": { + "description": "Certificate chain that this CMF provides.", + "type": "array", + "items": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "certificateContents": { + "description": "Information for contents of issued certificates. The information contained in this attribute may be updated over time during the VNF LCM, e.g., certificate(s) renewal.\n", + "type": "array", + "items": { + "description": "This type provides input information related to certificate content.\nNOTE: The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011 [10].\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate.", + "type": "string", + "enum": [ + "VNFCI_CERT", + "VNFOAM_CERT" + ] + }, + "supportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "version": { + "description": "A version.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate.", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate's signature.", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate's public key.", + "type": "string" + }, + "publicKey": { + "description": "Public key of this certificate.", + "type": "string" + }, + "certificateExtensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, "instantiationState": { "description": "The instantiation state of the VNF. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", "type": "string", - "enum": ["NOT_INSTANTIATED", "INSTANTIATED"] + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] }, "instantiatedVnfInfo": { "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", "type": "object", - "required": ["flavourId", "vnfState", "extCpInfo"], + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], "properties": { "flavourId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -160,7 +450,10 @@ "vnfState": { "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", "type": "string", - "enum": ["STARTED", "STOPPED"] + "enum": [ + "STARTED", + "STOPPED" + ] }, "scaleStatus": { "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", @@ -168,7 +461,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -191,7 +487,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -208,6 +507,14 @@ } } }, + "selectedDeployableModule": { + "description": "References a currently selected deployable module, as defined in the VNFD, that has already completed the instantiation of its VNFCs.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, "extCpInfo": { "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", "type": "array", @@ -215,16 +522,27 @@ "items": { "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "cpdId", "cpConfigId", "cpProtocolInfo"], + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], "oneOf": [ { - "required": ["associatedVnfcCpId"] + "required": [ + "associatedVnfcCpId" + ] }, { - "required": ["associatedVipCpId"] + "required": [ + "associatedVipCpId" + ] }, { - "required": ["associatedVnfVirtualLinkId"] + "required": [ + "associatedVnfVirtualLinkId" + ] } ], "properties": { @@ -250,30 +568,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -291,12 +622,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -314,7 +650,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -340,12 +679,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -392,6 +736,10 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -403,7 +751,10 @@ "items": { "description": "This type provides information related to virtual IP (VIP) CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["cpInstanceId", "cpdId"], + "required": [ + "cpInstanceId", + "cpdId" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -427,30 +778,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -468,12 +832,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -491,7 +860,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -517,12 +889,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -563,7 +940,12 @@ "items": { "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", "type": "object", - "required": ["cpInstanceId", "cpdId", "resourceHandle", "vduIds"], + "required": [ + "cpInstanceId", + "cpdId", + "resourceHandle", + "vduIds" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -574,7 +956,9 @@ "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -628,30 +1012,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -669,12 +1066,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -692,7 +1094,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -718,12 +1123,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -754,7 +1164,9 @@ "items": { "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", "type": "object", - "required": ["portInfo"], + "required": [ + "portInfo" + ], "properties": { "portInfo": { "description": "Service port numbers exposed by the virtual CP instance.\n", @@ -763,7 +1175,11 @@ "items": { "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", "type": "object", - "required": ["name", "port", "portConfigurable"], + "required": [ + "name", + "port", + "portConfigurable" + ], "properties": { "name": { "description": "The name of the port exposed by the virtual CP instance.\n", @@ -772,7 +1188,11 @@ "protocol": { "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", "type": "string", - "enum": ["TCP", "UDP", "SCTP"] + "enum": [ + "TCP", + "UDP", + "SCTP" + ] }, "port": { "description": "The L4 port number exposed by the virtual CP instance.\n", @@ -805,14 +1225,20 @@ "items": { "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", - "required": ["id", "resourceHandle", "currentVnfExtCpData"], + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -862,14 +1288,19 @@ "items": { "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -934,7 +1365,9 @@ "items": { "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", "type": "object", - "required": ["cpdId"], + "required": [ + "cpdId" + ], "properties": { "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -947,13 +1380,19 @@ "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { - "required": ["linkPortId"] + "required": [ + "linkPortId" + ] }, { - "required": ["cpProtocolData"] + "required": [ + "cpProtocolData" + ] }, { - "required": ["netAttDefResourceId"] + "required": [ + "netAttDefResourceId" + ] } ], "type": "object", @@ -984,7 +1423,9 @@ "items": { "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", @@ -999,21 +1440,31 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["fixedAddresses"] + "required": [ + "fixedAddresses" + ] }, { - "required": ["numDynamicAddresses"] + "required": [ + "numDynamicAddresses" + ] }, { - "required": ["ipAddressRange"] + "required": [ + "ipAddressRange" + ] } ], "properties": { @@ -1025,7 +1476,10 @@ "segmentationType": { "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", - "enum": ["VLAN", "INHERIT"] + "enum": [ + "VLAN", + "INHERIT" + ] }, "segmentationId": { "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", @@ -1036,12 +1490,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "fixedAddresses": { "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1088,12 +1547,17 @@ "virtualCpAddress": { "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1131,7 +1595,9 @@ "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1202,7 +1668,11 @@ "type": "array", "items": { "type": "object", - "required": ["id", "vnfVirtualLinkDescId", "networkResource"], + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -1217,7 +1687,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1267,14 +1739,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1325,7 +1802,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1354,7 +1834,9 @@ "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1429,7 +1911,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "performanceMetric"], + "required": [ + "id", + "performanceMetric" + ], "properties": { "id": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -1460,7 +1945,11 @@ "items": { "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "vduId", "computeResource"], + "required": [ + "id", + "vduId", + "computeResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1475,7 +1964,9 @@ "type": "string" }, "computeResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1540,7 +2031,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "cpdId"], + "required": [ + "id", + "cpdId" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1560,30 +2054,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -1601,12 +2108,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1653,12 +2165,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1693,6 +2210,10 @@ "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -1700,6 +2221,10 @@ "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -1710,7 +2235,11 @@ "items": { "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires including\n a related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the\n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["id", "vnfVirtualLinkDescId", "networkResource"], + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1725,7 +2254,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1783,14 +2314,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1841,7 +2377,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1867,7 +2406,11 @@ "items": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence\n notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["id", "virtualStorageDescId", "storageResource"], + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1882,7 +2425,9 @@ "type": "string" }, "storageResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1981,7 +2526,10 @@ "mcioType": { "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", "type": "string", - "enum": ["Deployment", "StatefulSet"] + "enum": [ + "Deployment", + "StatefulSet" + ] }, "desiredInstances": { "description": "Number of desired MCIO instances.\n", @@ -1991,6 +2539,76 @@ "description": "Number of available MCIO instances.\n", "type": "integer" }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfPaasServiceInfo": { + "description": "Information on the PaaS Services assigned and used by the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides input information about a PaaS Service that is used by a VNF instance. The PaasServiceInfo is comprised of various sets of information. Some information comes from the VNFD, other information comes from the PaaS Service assets provided by the NFVO to the VNFM, and other information is provided at runtime information about the usage of the PaaS Service.\n", + "type": "object", + "required": [ + "id", + "paasServiceId", + "paasServiceType", + "paasServiceRequestId", + "paasServiceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceType": { + "description": "The type of PaaS Service. The value of this attribute is expected to be matched against values of the registered PaaS Services in the PSR.", + "type": "string" + }, + "paasServiceVersion": { + "description": "A version.\n", + "type": "string" + }, + "paasServiceRequestId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "paasServiceHandle": { + "description": "This type provides information enabling the access and use of the PaaS Service by the VNF instance. The type and format of the handle depends on the form that the PaaS Service is formed.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, "additionalInfo": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" @@ -2011,12 +2629,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2027,7 +2649,9 @@ "indicators": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2038,7 +2662,9 @@ "instantiate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2049,7 +2675,9 @@ "terminate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2060,7 +2688,9 @@ "scale": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2071,7 +2701,9 @@ "scaleToLevel": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2082,7 +2714,9 @@ "changeFlavour": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2093,7 +2727,9 @@ "heal": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2104,7 +2740,9 @@ "operate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2115,7 +2753,9 @@ "changeExtConn": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2126,7 +2766,9 @@ "createSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2137,7 +2779,9 @@ "revertToSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2148,7 +2792,9 @@ "changeCurrentVnfPkg": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2160,4 +2806,4 @@ } } } -} +} \ No newline at end of file -- GitLab From 1d6fba4cd08e3c57d56e45cc9ab4da0b9eacae54 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Wed, 21 Aug 2024 10:58:29 +0500 Subject: [PATCH 03/30] Update VnfLcmOperationOccurrenceNotification datamodel as per clause 5.5.2.17 --- ...perationOccurrenceNotification.schema.json | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index 81e02413..4d4b6cf7 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -596,6 +596,42 @@ } } }, + "affectedCertificates": { + "description": "Information about certificate content that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable\n", + "type": "array", + "items": { + "description": "This type provides input information about added, deleted, and modified certificate contents.\n", + "type": "object", + "required": ["certificateInfoId", "changeType"], + "properties": { + "certificateInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateBaseProfileId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "securityPolicyId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cmfInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change.", + "type": "string", + "enum": ["ADD", "REMOVE", "MODIFY"] + } + } + } + }, "changedExtConnectivity": { "description": "Information about changed external connectivity, if this notification represents the result of a lifecycle operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the external connectivity of the VNF instance. Shall be absent otherwise. Only information about external VL instances that have been added or modified shall be provided.\n", "type": "array", -- GitLab From e83ede927ece491515944c8aa1f545be86e1cc12 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Thu, 22 Aug 2024 12:26:11 +0500 Subject: [PATCH 04/30] Add new test cases for resource: Select VNF deployable modules task as per clause 5.4.26 --- .../VNFSelectDeployableModules.robot | 98 +++++++++++++++++++ .../VnfLcmMntOperationKeywords.robot | 68 +++++++++++++ .../SelectVnfDeployableModulesRequest.json | 10 ++ 3 files changed, 176 insertions(+) create mode 100644 SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/SelectVnfDeployableModulesRequest.json diff --git a/SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot b/SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot new file mode 100644 index 00000000..37c1dce8 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot @@ -0,0 +1,98 @@ +*** Settings *** +Resource environment/variables.txt +Resource VnfLcmMntOperationKeywords.robot +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library BuiltIn +Library Collections +Library JSONLibrary +Library Process + +*** Test Cases *** +POST Select VNF Deployable Module + [Documentation] Test ID: 7.3.1.43.1 + ... Test title: POST Select VNF Deployable Module + ... Test objective: The objective is to select VNF Deployable Module + ... Pre-conditions: The VNF instance resource is in INSTANTIATED state + ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Select VNF Deployable Modules + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Select VNF Deployable Module Not Found + [Documentation] Test ID: 7.3.1.43.2 + ... Test title: POST Select VNF Deployable Module Not Found + ... Test objective: The objective is to test that the POST Select VNF Deployable Module fails when the resource is not present. + ... Pre-conditions: none + ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Select VNF Deployable Modules Not Existing + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Select VNF Deployable Module with conflict (Not Instantiated) + [Documentation] Test ID: 7.3.1.43.3 + ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) + ... Test objective: The objective is to test that the operation fails when there is a conflict with the resource state. + ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state + ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Select VNF Deployable Modules with conflict + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Select VNF Deployable Module - Method not implemented + [Documentation] Test ID: 7.3.1.43.4 + ... Test title: GET Select VNF Deployable Module - Method not implemented + ... Test objective: The objective is to verify that the method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.26.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Select VNF Deployable Modules + Check HTTP Response Status Code Is 405 + +PUT Select VNF Deployable Module - Method not implemented + [Documentation] Test ID: 7.3.1.43.5 + ... Test title: PUT Select VNF Deployable Module - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.26.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT Select VNF Deployable Modules + Check HTTP Response Status Code Is 405 + +PATCH Select VNF Deployable Module - Method Not implemented + [Documentation] Test ID: 7.3.1.43.6 + ... Test title: PATCH Select VNF Deployable Module - Method Not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.26.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH Select VNF Deployable Modules + Check HTTP Response Status Code Is 405 + +DELETE Select VNF Deployable Module - Method Not implemented + [Documentation] Test ID: 7.3.1.43.7 + ... Test title: DELETE Select VNF Deployable Module - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.26.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE Select VNF Deployable Modules + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 180d7fa3..24871fc3 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -2133,6 +2133,74 @@ DELETE VNF State Snapshot ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Select VNF Deployable Modules + log Trying to select deployable modules of VNF instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/SelectVnfDeployableModulesRequest.json + ${body}= Format String ${template} + Post ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Select VNF Deployable Modules Not Existing + log Trying to select deployable modules of VNF instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/SelectVnfDeployableModulesRequest.json + ${body}= Format String ${template} + Post ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/select_depl_mods ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Select VNF Deployable Modules with conflict + log Trying to select deployable modules of VNF instance. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/SelectVnfDeployableModulesRequest.json + ${body}= Format String ${template} + Post ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/select_depl_mods ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + +GET Select VNF Deployable Modules + log Trying to perform a GET. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Select VNF Deployable Modules + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Select VNF Deployable Modules + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Select VNF Deployable Modules + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + Check HTTP Content-Type Header Is Set Log Check Content-Type HTTP Header Should Contain ${response['headers']} Content-Type diff --git a/SOL003/VNFLifecycleManagement-API/jsons/SelectVnfDeployableModulesRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/SelectVnfDeployableModulesRequest.json new file mode 100644 index 00000000..fa5070c3 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/SelectVnfDeployableModulesRequest.json @@ -0,0 +1,10 @@ +{{ + "selectedDeployableModule": ["string"], + "targetScaleLevelInfo": [ + { + "aspectId": "{string}", + "scaleLevel": 1 + } + ], + "additionalParams": {} +}} -- GitLab From 40cb7eaee5dc7002ffc13012690572a6e27a43ee Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Thu, 22 Aug 2024 12:49:56 +0500 Subject: [PATCH 05/30] Fix datamodel: ScaleInfo as per clause 4.4.1.15 --- .../jsons/instantiateVnfRequestTargetScaleLevelInfo.json | 2 +- .../jsons/scaleVnfToLevelRequestScaleInfo.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequestTargetScaleLevelInfo.json b/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequestTargetScaleLevelInfo.json index e72a745d..7a117aba 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequestTargetScaleLevelInfo.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequestTargetScaleLevelInfo.json @@ -4,7 +4,7 @@ { "aspectId": "{aspectId}", "vnfdId": "string", - "scaleToLevel": "1" + "scaleLevel": 1 } ], "extVirtualLinks": [ diff --git a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequestScaleInfo.json b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequestScaleInfo.json index 11c31f50..9ad9adb8 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequestScaleInfo.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequestScaleInfo.json @@ -3,7 +3,7 @@ { "aspectId": "{aspectId}", "vnfdId": "string", - "scaleToLevel": "1" + "scaleLevel": 1 } ] }} \ No newline at end of file -- GitLab From 10a6a2438677e3876a77edc13376a7100316d341 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Tue, 27 Aug 2024 16:29:12 +0500 Subject: [PATCH 06/30] update datamodel: vnfLcmOpOcc as per clause 5.5.2.13 --- .../VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json | 3 ++- .../schemas/VnfLcmOpOccs.schema.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json index 60ac77db..02e688ac 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json @@ -70,7 +70,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json index 17727c47..7b517448 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json @@ -72,7 +72,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { -- GitLab From 0bf6a6ac58477c1bf4837e75d3dc84ed4b08c2c6 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 28 Aug 2024 09:55:34 +0500 Subject: [PATCH 07/30] fix the issue by adding missing _links attribute in VnfLcmOpOcc schema as per Table 5.5.2.13-1 --- .../VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json | 3 ++- .../schemas/VnfLcmOpOccs.schema.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json index 02e688ac..70f4b769 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json @@ -17,7 +17,8 @@ "vnfInstanceId", "operation", "isAutomaticInvocation", - "isCancelPending" + "isCancelPending", + "_links" ], "properties": { "id": { diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json index 7b517448..29ccb930 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json @@ -19,7 +19,8 @@ "vnfInstanceId", "operation", "isAutomaticInvocation", - "isCancelPending" + "isCancelPending", + "_links" ], "properties": { "id": { -- GitLab From 1b8a9e0909919959d188aed7eaf24488c11845d5 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Thu, 29 Aug 2024 10:43:52 +0500 Subject: [PATCH 08/30] update datamodel: vnfinstance as per clause 5.5.2.2 --- .../VNFLifecycleManagement-API/schemas/vnfInstance.schema.json | 3 ++- .../schemas/vnfInstances.schema.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index eb40fb23..1e547f42 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -2526,7 +2526,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "StatefulSet", + "DaemonSet" ] }, "desiredInstances": { diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 17993b9c..4a77983c 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -2528,7 +2528,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "StatefulSet", + "DaemonSet" ] }, "desiredInstances": { -- GitLab From c387e0fadf628f77380266831fc3b4a9cb61089a Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 13 Sep 2024 16:42:56 +0500 Subject: [PATCH 09/30] implement oauth scope for SOL003 VNFLifecycleManagement API --- .../CancelOperationTask.robot | 27 +- .../ChangeCurrentVNFPackageTask.robot | 26 + .../ChangeExternalVNFConnectivityTask.robot | 28 +- .../ChangeVNFFlavourTask.robot | 31 +- .../CreateVNFSnapshotTask.robot | 26 + .../FailOperationTask.robot | 27 + .../HealVNFTask.robot | 29 +- .../IndividualSubscription.robot | 26 + .../IndividualVNFInstance.robot | 30 +- .../IndividualVNFSnapshot.robot | 29 +- .../IndividualVnfLcmOperationOccurence.robot | 27 + .../InstantiateVNFTask.robot | 29 +- .../OperateVNFTask.robot | 26 + .../RetryOperationTask.robot | 27 + .../RevertToVNFSnapshotTask.robot | 26 + .../RollbackOperationTask.robot | 31 +- .../ScaleVNFTask.robot | 30 +- .../ScaleVNFToLevelTask.robot | 29 +- .../Subscriptions.robot | 28 +- .../TerminateVNFTask.robot | 27 + .../VNFInstances.robot | 28 +- .../VNFSnapshots.robot | 29 +- .../VNFStateSnapshot.robot | 28 +- .../VnfLcmMntOperationKeywords.robot | 700 ++++++++++++++++-- .../VnfLcmOperationOccurences.robot | 30 +- .../environment/variables.txt | 38 + requirements.txt | 1 + 27 files changed, 1338 insertions(+), 75 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index eccb1e68..17df4fcd 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -92,4 +92,29 @@ DELETE Cancel operation task - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Cancel operation task - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +POST Cancel operation task with permitted authorization scope + [Documentation] Test ID: 7.3.1.16.8 + ... Test title: POST Cancel operation task with permitted authorization scope + ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. + ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state with permitted authorization scope. + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF instance status equal to FAILED_TEMP + POST Cancel operation task with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check operation resource state is FAILED_TEMP + +POST Cancel operation task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.16.9 + ... Test title: POST Cancel operation task with not permitted authorization scope + ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. + ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state with not permitted authorization scope. + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF instance status equal to FAILED_TEMP + POST Cancel operation task with not permitted authorization scope + Check HTTP Response Status Code Is 403 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index e6eef538..8860beef 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -81,6 +81,32 @@ DELETE Change current VNF Package Task - Method not implemented ... Post-Conditions: none DELETE Change Current VNF Package Task Check HTTP Response Status Code Is 405 + +POST Change current VNF Package Task with permitted authorization scope + [Documentation] Test ID: 7.3.1.37.7 + ... Test title: POST Change current VNF Package Task with permitted authorization scope + ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change Current VNF Package Task with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Location Header Contains URI of Created Resource + +POST Change current VNF Package Task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.37.8 + ... Test title: POST Change current VNF Package Task + ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with not permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change Current VNF Package Task with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 434d1a5d..f9fd3ebb 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -67,4 +67,30 @@ DELETE Change external VNF connectivity - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Change External VNF Connectivity - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +POST Change external VNF connectivity with permitted authorization scope + [Documentation] Test ID: 7.3.1.10.6 + ... Test title: POST Change external VNF connectivity with permitted authorization scope + ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change External VNF Connectivity with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Change external VNF connectivity with not permitted authorization scope + [Documentation] Test ID: 7.3.1.10.7 + ... Test title: POST Change external VNF connectivity with not permitted authorization scope + ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change External VNF Connectivity with not permitted authorization scope + Check HTTP Response Status Code Is 403 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 2cf454be..11b94187 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -16,7 +16,7 @@ POST Change deployment flavour of a vnfInstance ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null - POST Change VNF deployment flavour + POST Change VNF deployment flavour Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Individual VNF LCM operation occurrence operationState is STARTING @@ -93,4 +93,31 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Change VNF deployment flavour - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +POST Change deployment flavour of a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.6.8 + ... Test title: POST Change deployment flavour of a vnfInstance with permitted authorization scope + ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour with permitted authorization scope + ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change VNF deployment flavour with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Change deployment flavour of a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.6.9 + ... Test title: POST Change deployment flavour of a vnfInstance with not permitted authorization scope + ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour with not permitted authorization scope + ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change VNF deployment flavour with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index ecfe31df..46afa0e0 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -108,6 +108,32 @@ DELETE Create VNF Snapshot Task - Method not implemented DELETE Create VNF Snapshot Task Check HTTP Response Status Code Is 405 +POST Create VNF Snapshot Task with permitted authorization scope + [Documentation] Test ID: 7.3.1.38.9 + ... Test title: POST Create VNF Snapshot Task with permitted authorization scope + ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with permitted authorization scope with permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Create VNF Snapshot Task with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Location Header Contains URI of Created Resource + +POST Create VNF Snapshot Task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.38.10 + ... Test title: POST Create VNF Snapshot Task with not permitted authorization scope + ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with not permitted authorization scope with not permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Create VNF Snapshot Task with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index 604c15bd..cd4fd6b1 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -94,3 +94,30 @@ DELETE Fail operation task - Method not implemented ... Post-Conditions: Delete Fail operation Check HTTP Response Status Code Is 405 + +POST Fail operation task with permitted authorization scope + [Documentation] Test ID: 7.3.1.15.8 + ... Test title: POST Fail operation task with permitted authorization scope + ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation with permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF resource state is FINALLY_FAILED + Post Fail operation with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check operation resource state is FINALLY_FAILED + +POST Fail operation task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.15.9 + ... Test title: POST Fail operation task with permitted authorization scope + ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation with permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF resource state is FINALLY_FAILED + Post Fail operation with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index 8cdfb001..46e771e0 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -93,4 +93,31 @@ DELETE Heal VNFInstance - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Heal VNF - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +POST Heal a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.8.8 + ... Test title: POST Heal a vnfInstance with permitted authorization scope + ... Test objective: The objective is to test that POST method heal a VNF instance with permitted authorization scope + ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Heal VNF with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Heal a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.8.9 + ... Test title: POST Heal a vnfInstance with permitted authorization scope + ... Test objective: The objective is to test that POST method heal a VNF instance with not permitted authorization scope + ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Heal VNF with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index 5585c8d1..5275e77d 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -78,4 +78,30 @@ GET Individual Subscription - Not Found ... Post-Conditions: none Get Individual Subscription Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Individual Subscription with permitted authorization scope + [Documentation] Test ID: 7.3.1.18.7 + ... Test title: GET Individual Subscription with permitted authorization scope + ... Test objective: The objective is to test the Get individual subscription with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual subscription with permitted authorization scope + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Subscription + +GET Individual Subscription with not permitted authorization scope + [Documentation] Test ID: 7.3.1.18.8 + ... Test title: GET Individual Subscription with permitted authorization scope + ... Test objective: The objective is to test the Get individual subscription with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual subscription with not permitted authorization scope + Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 1be74b1d..0d2ee939 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -37,7 +37,7 @@ Get Information about an individual VNF Instance Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstance Check HTTP Response Body vnfInstance content against VNF Descriptor - + PUT Individual VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.2.3 ... Test title: PUT Individual VNFInstance - Method not implemented @@ -127,6 +127,34 @@ Get Information about an individual VNF Instance - Not Found GET individual vnfInstance Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails + +Get Information about an individual VNF Instance with permitted authorization scope + [Documentation] Test ID: 7.3.1.2.2 + ... Test title: Get Information about an individual VNF Instance with permitted authorization scope + ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual vnfInstance with permitted authorization scope + Check HTTP Response Header Contains ETag and Last-Modified + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is vnfInstance + Check HTTP Response Body vnfInstance content against VNF Descriptor + +Get Information about an individual VNF Instance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.2.2 + ... Test title: Get Information about an individual VNF Instance with not permitted authorization scope + ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual vnfInstance with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index f4647a03..ed828b56 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -118,4 +118,31 @@ DELETE Individual VNF Snapshot - Conflict DELETE individual VNF Snapshot - CONFLICT Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - Check Postcondition VNF Snapshot Resource Existence \ No newline at end of file + Check Postcondition VNF Snapshot Resource Existence + +GET Information about an individual VNF Snapshot - SUCCESSFUL with permitted authorization scope + [Documentation] Test ID: 7.3.1.41.10 + ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL with permitted authorization scope + ... Test objective: The objective is to GET information about an individual VNF Snapshot with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Snapshot with permitted authorization scope + Check HTTP Response Header Contains ETag and Last-Modified + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotInfo + +GET Information about an individual VNF Snapshot with not permitted authorization scope + [Documentation] Test ID: 7.3.1.41.11 + ... Test title: GET Information about an individual VNF Snapshot with not permitted authorization scope + ... Test objective: The objective is to GET information about an individual VNF Snapshot with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Snapshot with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 8288f8d2..04e0d1a8 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -79,4 +79,31 @@ Get Individual VNF LCM Operation occurrences - Not Found ... Post-Conditions: none Get Individual VNF LCM Operation occurrences Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get Individual VNF LCM Operation occurrences with permitted authorization scope + [Documentation] Test ID: 7.3.1.12.7 + ... Test title: Get Individual VNF LCM Operation occurrences with permitted authorization scope + ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual VNF LCM Operation occurrences with permitted authorization scope + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfLcmOpOcc + Check HTTP Response Body of Individual VNF LCM Operation occurrences content against VNF Descriptor + +Get Individual VNF LCM Operation occurrences with not permitted authorization scope + [Documentation] Test ID: 7.3.1.12.8 + ... Test title: Get Individual VNF LCM Operation occurrences with not permitted authorization scope + ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual VNF LCM Operation occurrences with not permitted authorization scope + Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index daa2dcae..e6d9a28a 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -81,4 +81,31 @@ DELETE Instantiate VNFInstance - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE instantiate individual vnfInstance - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +Instantiate a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.3.7 + ... Test title: Post Instantiate Individual VNFInstance with permitted authorization scope + ... Test objective: The objective is to instantiate a VNF instance with permitted authorization scope + ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST instantiate individual vnfInstance with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +Instantiate a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.3.8 + ... Test title: Post Instantiate Individual VNFInstance with not permitted authorization scope + ... Test objective: The objective is to instantiate a VNF instance with not permitted authorization scope + ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST instantiate individual vnfInstance with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index 7f2f923e..2daa755b 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -95,6 +95,32 @@ DELETE Operate VNFInstance - Method not implemented ... Post-Conditions: none DELETE Operate VNF Check HTTP Response Status Code Is 405 + +POST Operate a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.9.8 + ... Test title: POST Operate a vnfInstance with permitted authorization scope + ... Test objective: The objective is to test that POST method operate a VNF instance with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Operate VNF with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check Operation Occurrence Id existence + +POST Operate a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.9.9 + ... Test title: POST Operate a vnfInstance with not permitted authorization scope + ... Test objective: The objective is to test that POST method operate a VNF instance with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Operate VNF with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index 9f597eca..f84c03dc 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -98,6 +98,33 @@ DELETE Retry operation task - Method not implemented Delete Retry operation Check HTTP Response Status Code Is 405 +Post Retry operation task with permitted authorization scope + [Documentation] Test ID: 7.3.1.13.8 + ... Test title: Post Retry operation task with permitted authorization scope + ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state with permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Retry operation with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +Post Retry operation task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.13.9 + ... Test title: Post Retry operation task with not permitted authorization scope + ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state with not permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Retry operation with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index 06fbc49b..0fd1584a 100644 --- a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -95,6 +95,32 @@ DELETE Revert to VNF Snapshot Task - Method not implemented DELETE Revert to VNF Snapshot Task Check HTTP Response Status Code Is 405 +POST Revert to VNF Snapshot Task with permitted authorization scope + [Documentation] Test ID: 7.3.1.39.8 + ... Test title: POST Revert to VNF Snapshot Task with permitted authorization scope + ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with permitted authorization scope with permitted authorization scopes. + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Revert to VNF Snapshot Task with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Location Header Contains URI of Created Resource + +POST Revert to VNF Snapshot Task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.39.9 + ... Test title: POST Revert to VNF Snapshot Task with not permitted authorization scope + ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with not permitted authorization scope with not permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Revert to VNF Snapshot Task with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index fee1ca8c..eeb3a29a 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -9,7 +9,7 @@ Documentation This task resource represents the "Rollback operation" operatio Suite Setup Check resource existence *** Test Cases *** -Post Rollback operation task +Post Rollback operation task [Documentation] Test ID: 7.3.1.14.1 ... Test title: Post Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation @@ -22,7 +22,7 @@ Post Rollback operation task Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Individual VNF LCM operation occurrence operationState is STARTING - + POST Rollback operation task Conflict (Not-FAILED_TEMP) [Documentation] Test ID: 7.3.1.14.2 ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) @@ -97,6 +97,33 @@ DELETE Rollback operation task - Method not implemented Delete Rollback operation Check HTTP Response Status Code Is 405 +Post Rollback operation task with permitted authorization scope + [Documentation] Test ID: 7.3.1.14.8 + ... Test title: Post Rollback operation task with permitted authorization scope + ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation with permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Rollback operation with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +Post Rollback operation task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.14.9 + ... Test title: Post Rollback operation task with not permitted authorization scope + ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation with not permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Rollback operation with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index d9b537c3..cfb8a1de 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -17,7 +17,7 @@ POST Scale a vnfInstance ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance + POST Scale vnfInstance Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Individual VNF LCM operation occurrence operationState is STARTING @@ -96,6 +96,34 @@ DELETE Scale VNFInstance - Method not implemented DELETE Scale vnfInstance Check HTTP Response Status Code Is 405 +POST Scale a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.4.8 + ... Test title: POST Scale a vnfInstance with permitted authorization scope + ... Test objective: The objective is to scale a VNF instance with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Scale a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.4.9 + ... Test title: POST Scale a vnfInstance with not permitted authorization scope + ... Test objective: The objective is to scale a VNF instance with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance with not permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 3dcc0dc4..efced3b5 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -106,4 +106,31 @@ POST Scale a vnfInstance to level - with scaleInfo attribute ... Post-Conditions: none POST Scale vnfInstance to level with scaleInfo attribute Check HTTP Response Status Code Is 202 - Check Operation Occurrence Id existence \ No newline at end of file + Check Operation Occurrence Id existence + +POST Scale a vnfInstance to level - with InstantiationLevelId attribute with permitted authorization scope + [Documentation] Test ID: 7.3.1.5.9 + ... Test title: POST Scale a vnfInstance to level with permitted authorization scope + ... Test objective: The objective is to scale a VNF instance to a target level with permitted authorization scope . + ... Pre-conditions: none + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance to level with InstantiationLevelId attribute with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Scale a vnfInstance to level - with InstantiationLevelId attribute with not permitted authorization scope + [Documentation] Test ID: 7.3.1.5.10 + ... Test title: POST Scale a vnfInstance to level with not permitted authorization scope + ... Test objective: The objective is to scale a VNF instance to a target level with not permitted authorization scope . + ... Pre-conditions: none + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance to level with InstantiationLevelId attribute with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index 40e9624a..c8674a4f 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -170,7 +170,7 @@ DELETE subscriptions - Method not implemented Check HTTP Response Status Code Is 405 GET Subscriptions as a Paged Response - [Documentation] Test ID: 7.3.1.17.14 + [Documentation] Test ID: 7.3.1.17.14 ... Test title: GET Subscriptions as a Paged Response ... Test objective: The objective is Get the list of active subscriptions as a Paged Response. ... Pre-conditions: none @@ -220,6 +220,32 @@ GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter Get subscriptions with nextpage_opaque_marker parameter Check HTTP Response Status Code Is 200 +POST Create a new subscription with permitted authorization scope + [Documentation] Test ID: 7.3.1.17.18 + ... Test title: POST Create a new subscription with permitted authorization scope + ... Test objective: The POST method creates a new subscription with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + Post Create subscription with permitted authorization scope + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is Subscription + +POST Create a new subscription with not permitted authorization scope + [Documentation] Test ID: 7.3.1.17.19 + ... Test title: POST Create a new subscription with not permitted authorization scope + ... Test objective: The POST method creates a new subscription with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + Post Create subscription with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Void Log do nothing diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 23fad768..5e765aa3 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -83,6 +83,33 @@ DELETE Terminate VNFInstance - Method not implemented DELETE Terminate VNF Check HTTP Response Status Code Is 405 +POST Terminate a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.7.7 + ... Test title: POST Terminate a vnfInstance with permitted authorization scope + ... Test objective: The objective is to test that POST method terminate a VNF instance with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Terminate VNF with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Terminate a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.7.8 + ... Test title: POST Terminate a vnfInstance with not permitted authorization scope + ... Test objective: The objective is to test that POST method terminate a VNF instance with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Terminate VNF with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index 47bb2e9a..dbe01ed9 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -224,4 +224,30 @@ GET information about multiple VNF instances using Filter ... Post-Conditions: none GET multiple vnfInstances using filter Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is vnfInstances \ No newline at end of file + Check HTTP Response Body Json Schema Is vnfInstances + +POST Create a new vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.1.17 + ... Test title: POST Create a new vnfInstance with permitted authorization scope + ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF instance created + POST Create a new vnfInstance with permitted authorization scope + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is vnfInstance + +POST Create a new vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.1.18 + ... Test title: POST Create a new vnfInstance with not permitted authorization scope + ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF instance created + POST Create a new vnfInstance with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot index a34e4fc8..6317e454 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -193,4 +193,31 @@ GET information about multiple VNF Snapshots using Filter ... Post-Conditions: none GET multiple VNF Snapshots using filter Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is VnfSnapshotsInfo \ No newline at end of file + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +POST Create a new VNF Snapshot with permitted authorization scope + [Documentation] Test ID: 7.3.1.40.16 + ... Test title: POST Create a new VNF Snapshot with permitted authorization scope + ... Test objective: The objective is to create a new VNF snapshot with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF snapshot is created + POST Create a new VNF Snapshot with permitted authorization scope + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is VnfSnapshotInfo + Check HTTP Location Header Contains URI of Created Resource + +POST Create a new VNF Snapshot with not permitted authorization scope + [Documentation] Test ID: 7.3.1.40.17 + ... Test title: POST Create a new VNF Snapshot with not permitted authorization scope + ... Test objective: The objective is to create a new VNF snapshot with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF snapshot is created + POST Create a new VNF Snapshot with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot index 67da2fae..a81f3f67 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot @@ -113,4 +113,30 @@ DELETE VNF State Snapshot - Method Not implemented ... Applicability: none ... Post-Conditions: none DELETE VNF State Snapshot - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +GET VNF State Snapshot - Complete File with permitted authorization scope + [Documentation] Test ID: 7.3.1.42.10 + ... Test title: GET Information about an individual VNF State Snapshot - Complete File with permitted authorization scope + ... Test objective: The objective is to fetch the whole content of a VNF State Snapshot using GET method with permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF State Snapshot - Complete with permitted authorization scope + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set + +GET VNF State Snapshot - Complete File with not permitted authorization scope + [Documentation] Test ID: 7.3.1.42.11 + ... Test title: GET Information about an individual VNF State Snapshot - Complete File with not permitted authorization scope + ... Test objective: The objective is to fetch the whole content of a VNF State Snapshot using GET method with not permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF State Snapshot - Complete with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 24871fc3..0afd0efb 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -9,6 +9,8 @@ Library JSONLibrary Library Collections Library Process Library JSONSchemaLibrary schemas/ +Library jwt + #Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml #Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml @@ -17,7 +19,7 @@ Create Sessions Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance Wait For Process handle=mockInstance timeout=5s on_timeout=continue Create Mock Session ${callback_uri}:${callback_port} - + Get Vnf Instance [Arguments] ${vnfInstanceId} Set Headers {"Accept":"${ACCEPT}"} @@ -234,7 +236,7 @@ POST Cancel operation task Log Validate Status code ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + POST Cancel operation task with conflict Log Cancel an ongoing VNF lifecycle operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -252,6 +254,28 @@ POST Cancel operation task not existing Log Validate Status code ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Cancel operation task with permitted authorization scope + Log Cancel an ongoing VNF lifecycle operation + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Cancel a VNF lifecycle operation + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} + Log Validate Status code + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Cancel operation task with not permitted authorization scope + Log Cancel an ongoing VNF lifecycle operation + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${Authorization_Token}"} + Log Cancel a VNF lifecycle operation + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} + Log Validate Status code + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Cancel operation task log Trying to perform a GET. This method should not be implemented @@ -279,7 +303,7 @@ DELETE Cancel operation task Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Change External VNF Connectivity Log Trying to change the external connectivity of a VNF instance. @@ -288,6 +312,30 @@ POST Change External VNF Connectivity Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Change External VNF Connectivity with permitted authorization scope + Log Trying to change the external connectivity of a VNF instance with permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_EXT_CONN_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${body}= Get File jsons/changeExtVnfConnectivityRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Change External VNF Connectivity with not permitted authorization scope + Log Trying to change the external connectivity of a VNF instance with not permitted authorization scope. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_EXT_CONN_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${body}= Get File jsons/changeExtVnfConnectivityRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -317,7 +365,7 @@ DELETE Change External VNF Connectivity Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Change VNF deployment flavour Log Trying to change the deployment flavour of a VNF instance. @@ -353,6 +401,34 @@ POST Change VNF deployment flavour of not existing VNF ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Change VNF deployment flavour with permitted authorization scope + Log Trying to change the deployment flavour of a VNF instance with permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_FLAVOUR_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + ${template}= Get File jsons/changeVnfFlavourRequest.json + ${body}= Format String ${template} newFlavourId=${Flavour_ID} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Change VNF deployment flavour with not permitted authorization scope + Log Trying to change the deployment flavour of a VNF instance with not permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_FLAVOUR_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + ${template}= Get File jsons/changeVnfFlavourRequest.json + ${body}= Format String ${template} newFlavourId=${Flavour_ID} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET Change VNF deployment flavour log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -380,8 +456,8 @@ DELETE Change VNF deployment flavour Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - -POST Create a new vnfInstance + +POST Create a new vnfInstance Log Create VNF instance by POST to /vnf_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -488,7 +564,7 @@ GET multiple vnfInstances with exclude_fields attribute selector GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_fields=${fields_vnfInstance} ${output}= Output response Set Suite Variable ${response} ${output} - + PUT VNFInstances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -514,7 +590,33 @@ DELETE VNFInstances Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${output}= Output response - Set Suite Variable ${response} ${output} + Set Suite Variable ${response} ${output} + +POST Create a new vnfInstance with permitted authorization scope + Log Create VNF instance by POST to /vnf_instances with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create a new vnfInstance with not permitted authorization scope + Log Create VNF instance by POST to /vnf_instances with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} POST individual vnfInstance log Trying to perform a POST. This method should not be implemented @@ -531,9 +633,31 @@ GET individual vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual vnfInstance with permitted authorization scope + log Trying to get information about an individual VNF instance with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_READONLY_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + +GET individual vnfInstance with not permitted authorization scope + log Trying to get information about an individual VNF instance with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_READONLY_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + PUT individual vnfInstance log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -576,7 +700,7 @@ PATCH individual vnfInstance with conflict Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${anotherInstantiatedVnfInstanceId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + PATCH individual vnfInstance - Etag mismatch log Trying to modify an individual VNF instance Set Headers {"Accept":"${ACCEPT}"} @@ -590,7 +714,6 @@ PATCH individual vnfInstance - Etag mismatch ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - DELETE individual vnfInstance log Trying to delete an individual VNF instance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -603,8 +726,9 @@ DELETE individual vnfInstance in INSTANTIATED state Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} -POST instantiate individual vnfInstance + Set Global Variable ${response} ${outputResponse} + +POST instantiate individual vnfInstance Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -613,7 +737,7 @@ POST instantiate individual vnfInstance Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + POST instantiate individual vnfInstance with conflict Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} @@ -649,9 +773,34 @@ DELETE instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST instantiate individual vnfInstance with permitted authorization scope + Log Trying to Instantiate a vnf Instance with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${INSTANTIATE_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${body}= Get File jsons/instantiateVnfRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -POST Scale vnfInstance + +POST instantiate individual vnfInstance with not permitted authorization scope + Log Trying to Instantiate a vnf Instance with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${INSTANTIATE_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${body}= Get File jsons/instantiateVnfRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Scale vnfInstance Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -660,7 +809,8 @@ POST Scale vnfInstance ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + POST Scale vnfInstance with VNF NOT-INSTANTIATED Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} @@ -680,7 +830,31 @@ POST Scale vnfInstance with not existing VNF ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/scale ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance with permitted authorization scope + Log Trying to Instantiate a vnf Instance with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SCALE_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/scaleVnfRequest.json + ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance with not permitted authorization scope + Log Trying to Instantiate a vnf Instance with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SCALE_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/scaleVnfRequest.json + ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance Log Trying to get a scale a vnf Instance Set Headers {"Accept":"${ACCEPT}"} @@ -716,8 +890,9 @@ DELETE Scale vnfInstance ${body}= Get File jsons/scaleVnfRequest.json Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} -POST Scale vnfInstance to level with InstantiationLevelId attribute + Set Global Variable ${response} ${outputResponse} + +POST Scale vnfInstance to level with InstantiationLevelId attribute Log Trying to scale a vnf Instance to level Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -727,6 +902,7 @@ POST Scale vnfInstance to level with InstantiationLevelId attribute Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + POST Scale vnfInstance to level with scaleInfo attribute Log Trying to scale a vnf Instance to level Set Headers {"Accept":"${ACCEPT}"} @@ -755,8 +931,33 @@ POST Scale vnfInstance to level with not existing VNF ${template}= Get File jsons/scaleVnfToLevelRequest.json ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/scale_to_level ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance to level with InstantiationLevelId attribute with permitted authorization scope + Log Trying to scale a vnf Instance to level with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SCALE_TO_LEVEL_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/scaleVnfToLevelRequestInstantiationLevelId.json + ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Scale vnfInstance to level with InstantiationLevelId attribute with not permitted authorization scope + Log Trying to scale a vnf Instance to level with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SCALE_TO_LEVEL_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/scaleVnfToLevelRequestInstantiationLevelId.json + ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance to level log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -805,8 +1006,34 @@ POST Terminate VNF in NOT-INSTANTIATED state ${body}= Format String ${template} terminationType=${terminationType} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/terminate ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +POST Terminate VNF with permitted authorization scope + Log Trying to terminate a VNF instance with permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${TERMINATE_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/terminateVnfRequest.json + ${body}= Format String ${template} terminationType=${terminationType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Terminate VNF with not permitted authorization scope + Log Trying to terminate a VNF instance with not permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${TERMINATE_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/terminateVnfRequest.json + ${body}= Format String ${template} terminationType=${terminationType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET Terminate VNF log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -833,7 +1060,7 @@ DELETE Terminate VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Heal VNF Log Trying to heal a VNF instance. @@ -844,8 +1071,8 @@ POST Heal VNF ${body}= Format String ${template} healingCause=${healingCause} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - + Set Global Variable ${response} ${outputResponse} + POST Heal VNF Not Instantiated Log Trying to heal a VNF instance. Set Headers {"Accept":"${ACCEPT}"} @@ -866,7 +1093,33 @@ POST Heal VNF Not Existing ${body}= Format String ${template} healingCause=${healingCause} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/heal ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + +POST Heal VNF with permitted authorization scope + Log Trying to heal a VNF instance with permitted authorization scope. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${scopeValue}= Create Dictionary scopeValue=${HEAL_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/healVnfRequest.json + ${body}= Format String ${template} healingCause=${healingCause} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Heal VNF with not permitted authorization scope + Log Trying to heal a VNF instance with not permitted authorization scope. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${scopeValue}= Create Dictionary scopeValue=${HEAL_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/healVnfRequest.json + ${body}= Format String ${template} healingCause=${healingCause} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Heal VNF log Trying to perform a GET. This method should not be implemented @@ -894,7 +1147,7 @@ DELETE Heal VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Operate VNF Log Trying to operate a VNF instance. @@ -906,7 +1159,7 @@ POST Operate VNF Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + POST Operate VNF with conflict Log Trying to operate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} @@ -955,7 +1208,33 @@ DELETE Operate VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + +POST Operate VNF with permitted authorization scope + Log Trying to operate a VNF instance with permitted authorization scope. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${scopeValue}= Create Dictionary scopeValue=${OPERATE_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/operateVnfRequest.json + ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Operate VNF with not permitted authorization scope + Log Trying to operate a VNF instance with not permitted authorization scope. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${scopeValue}= Create Dictionary scopeValue=${OPERATE_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/operateVnfRequest.json + ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Post VNF LCM Operation occurrences log Trying to perform a POST. This method should not be implemented @@ -971,7 +1250,7 @@ GET VNF LCM Operation occurrences Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} Get VNF LCM Operation occurrences with nextpage_opaque_marker parameter Log Get next page of subscriptions Set Headers {"Accept":"${ACCEPT}"} @@ -1036,7 +1315,27 @@ Get VNF LCM Operation occurrences with exclude_fields attribute selector Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_fields=${fields_vnfLcmOpOcc} ${output}= Output response - Set Suite Variable ${response} ${output} + Set Suite Variable ${response} ${output} +GET VNF LCM Operation occurrences with permitted authorization scope + Log Query status information about multiple VNF lifecycle management operation occurrences. + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +GET VNF LCM Operation occurrences with not permitted authorization scope + Log Query status information about multiple VNF lifecycle management operation occurrences. + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} PUT VNF LCM Operation occurrences log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1072,7 +1371,27 @@ Get Individual VNF LCM Operation occurrences Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +Get Individual VNF LCM Operation occurrences with permitted authorization scope + Log Query status information about multiple VNF lifecycle management operation occurrences. + Set Headers {"Accept":"${ACCEPT}"} + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Get Individual VNF LCM Operation occurrences with not permitted authorization scope + Log Query status information about multiple VNF lifecycle management operation occurrences. + Set Headers {"Accept":"${ACCEPT}"} + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Put multiple VNF instances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1093,14 +1412,16 @@ Delete multiple VNF instances Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + Post Retry operation Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + Post Retry operation with conflict Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -1143,14 +1464,32 @@ Delete Retry operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +Post Retry operation with permitted authorization scope + Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Post Retry operation with not permitted authorization scope + Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Post Rollback operation Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} Post Rollback operation with conflict Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -1193,15 +1532,32 @@ Delete Rollback operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +Post Rollback operation with permitted authorization scope + Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Post Rollback operation with not permitted authorization scope + Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Post Fail operation - Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - Post Fail operation with conflict Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -1215,8 +1571,27 @@ Post Fail operation not existing Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingvnfLcmOpOccId}/fail + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Fail operation with permitted authorization scope + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +Post Fail operation with not permitted authorization scope + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Get Fail operation Log Trying to perform a GET. This method should not be implemented. @@ -1246,7 +1621,8 @@ Delete Fail operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + Post Create subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} @@ -1265,7 +1641,6 @@ Post Create subscription Log Verify notification endpoint is tested Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} - Post Create subscription - DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM is not permitting duplication. Skipping the test @@ -1285,7 +1660,7 @@ Post Create subscription - DUPLICATION Log Verify notification endpoint is tested Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} - + Post Create subscription - NO-DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 1 VNFM permits duplication. Skipping the test @@ -1369,6 +1744,46 @@ Get subscriptions - invalid filter # GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields_subscription} # ${output}= Output response # Set Suite Variable ${response} ${output} +Post Create subscription with permitted authorization scope + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/lccnSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Log Verify notification endpoint is tested + Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} +Post Create subscription with not permitted authorization scope + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/lccnSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Log Verify notification endpoint is tested + Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} PUT subscriptions log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1392,7 +1807,7 @@ DELETE subscriptions Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} Post Create Individual subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1408,6 +1823,25 @@ Get Individual subscription Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +Get Individual subscription with permitted authorization scope + log Trying to get information about an individual subscription with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Get Individual subscription with not permitted authorization scope + log Trying to get information about an individual subscription with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Put Individual subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1427,10 +1861,11 @@ Patch Individual subscription Delete Individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${Authorization_Token}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + Put Notification subscription log Trying to perform a PUT. This method should not be implemented Put ${callback_endpoint} @@ -1684,9 +2119,35 @@ POST Change Current VNF Package Task ${template}= Get File jsons/changeCurrentVnfPkgRequest.json ${body}= Format String ${template} vnfdId=${vnfdId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Change Current VNF Package Task with permitted authorization scope + Log Trying to change current VNF package task with permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_VNFPKG_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/changeCurrentVnfPkgRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Change Current VNF Package Task with not permitted authorization scope + Log Trying to change current VNF package task with not permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_VNFPKG_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/changeCurrentVnfPkgRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET Change Current VNF Package Task log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -1713,7 +2174,7 @@ DELETE Change Current VNF Package Task Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} Check HTTP Location Header Contains URI of Created Resource ${URI}= Get Value From Json ${response['headers']} $..Location @@ -1728,8 +2189,8 @@ POST Create VNF Snapshot Task ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - + Set Global Variable ${response} ${outputResponse} + POST Create VNF Snapshot Task NOT SUPPORTED Log Trying to request a snapshot of a VNF instance for which task resource does not exist Set Headers {"Accept":"${ACCEPT}"} @@ -1760,6 +2221,32 @@ POST Create VNF Snapshot Task INVALID IDENTIFIER ${template}= Get File jsons/CreateVnfSnapshotRequest.json ${body}= Format String ${template} vnfSnapshotInfoId=${invalidVnfSnapshotInfoId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task with permitted authorization scope + Log Trying to request a snapshot of a VNF instance with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${CREATE_SNAPSHOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task with not permitted authorization scope + Log Trying to request a snapshot of a VNF instance with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${CREATE_SNAPSHOT_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1800,7 +2287,7 @@ POST Revert to VNF Snapshot Task ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Revert to VNF Snapshot Task NOT SUPPORTED Log Trying to revert to a snapshot of a VNF instance for which task resource does not exist @@ -1851,17 +2338,43 @@ DELETE Revert to VNF Snapshot Task Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Revert to VNF Snapshot Task with permitted authorization scope + Log Trying to initiate revert to VNF snapshot task with permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${REVERT_TO_SNAPSHOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/RevertToVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Revert to VNF Snapshot Task with not permitted authorization scope + Log Trying to initiate revert to VNF snapshot task with not permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${REVERT_TO_SNAPSHOT_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/RevertToVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} -POST Create a new VNF Snapshot +POST Create a new VNF Snapshot Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json ${body}= Format String ${template} vnfSnapshotPkgId=${vnfSnapshotPkgId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} GET multiple VNF Snapshots Log Query VNF The GET method queries information about multiple VNF snapshots. @@ -1970,7 +2483,33 @@ DELETE VNF Snapshots Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + +POST Create a new VNF Snapshot with permitted authorization scope + Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json + ${body}= Format String ${template} vnfSnapshotPkgId=${vnfSnapshotPkgId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create a new VNF Snapshot with not permitted authorization scope + Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json + ${body}= Format String ${template} vnfSnapshotPkgId=${vnfSnapshotPkgId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} POST individual VNF Snapshot log Trying to perform a POST. This method should not be implemented @@ -1985,10 +2524,10 @@ GET individual VNF Snapshot log Trying to get information about an individual VNF snapshot Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} GET individual VNF Snapshot with invalid URI log Trying to get information about an individual VNF snapshot @@ -2048,15 +2587,37 @@ DELETE individual VNF Snapshot - CONFLICT Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_InUse} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot with permitted authorization scope + log Trying to get information about an individual VNF snapshot + ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot with not permitted authorization scope + log Trying to get information about an individual VNF snapshot + ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Check Postcondition VNF Snapshot Resource Is Deleted - Get individual VNF Snapshot + GET individual VNF Snapshot Integer response status 404 Log VNF Snapshot Resource deleted Check Postcondition VNF Snapshot Resource Existence - Get individual VNF Snapshot + GET individual VNF Snapshot Integer response status 200 Log VNF Snapshot Resource is not deleted @@ -2075,7 +2636,7 @@ GET VNF State Snapshot - Complete Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} GET VNF State Snapshot - Range Request Pass Execution If ${VNFM_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. @@ -2104,6 +2665,26 @@ GET VNF State Snapshot - Conflict in State Set Headers {"Accept":"${ACCEPT_OCTET}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_creationIncomplete}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF State Snapshot - Complete with permitted authorization scope + log Trying to fetch the complete contents of an VNF State Snapshot with permitted authorization scope + Set Headers {"Accept":"${ACCEPT_OCTET}"} + ${scopeValue}= Create Dictionary scopeValue=${VNF_STATE_SNAPSHOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF State Snapshot - Complete with not permitted authorization scope + log Trying to fetch the complete contents of an VNF State Snapshot with not permitted authorization scope + Set Headers {"Accept":"${ACCEPT_OCTET}"} + ${scopeValue}= Create Dictionary scopeValue=${VNF_STATE_SNAPSHOT_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -2131,7 +2712,7 @@ DELETE VNF State Snapshot Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Select VNF Deployable Modules log Trying to select deployable modules of VNF instance @@ -2218,3 +2799,8 @@ Check HTTP Content-Length Header Is Set Should Contain ${response['headers']} Content-Length Should Be Equal As Strings ${response['headers']['Content-Length']} ${full_length} Log Header Content-Length is present + +JWT Encode + [Arguments] ${payload} ${key} ${algorithm} + ${encoded}= Evaluate jwt.encode(${payload}, ${key}, ${algorithm}) + [Return] ${encoded} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index f3c71a9d..4c543a02 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -159,7 +159,7 @@ GET status information about multiple VNF LCM Operation OCC to get Paged Respons Check HTTP Response Header Contain Link GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter - [Documentation] Test ID: 7.3.1.11.12a + [Documentation] Test ID: 7.3.1.11.12a ... Test title: GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF lifecycle management operation occurrences as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving multiple VNF lifecycle management operation occurrences as a paged response has been successfully issued (Test ID 7.3.1.11.12) @@ -194,4 +194,30 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_defaul ... Post-Conditions: none Get VNF LCM Operation occurrences with exclude_default and fields attribute selector Check HTTP Response Status Code Is 202 - Check HTTP Response Body Json Schema Is VnfLcmOpOccs \ No newline at end of file + Check HTTP Response Body Json Schema Is VnfLcmOpOccs + +GET status information about multiple VNF LCM Operation OCC with permitted authorization scope + [Documentation] Test ID: 7.3.1.11.15 + ... Test title: GET status information about multiple VNF LCM Operation OCC with permitted authorization scope + ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF LCM Operation occurrences with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Body Json Schema Is VnfLcmOpOccs + +GET status information about multiple VNF LCM Operation OCC with not permitted authorization scope + [Documentation] Test ID: 7.3.1.11.16 + ... Test title: GET status information about multiple VNF LCM Operation OCC with not permitted authorization scope + ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF LCM Operation occurrences with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 81a2d522..f0f6ae9d 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -5,11 +5,49 @@ ${VNFM_SCHEMA} https ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${CONTENT_TYPE} application/json +${OAUTH_KEY} +${OAUTH_ENCRYPTION_ALGORITHM} HS256 ${AUTHORIZATION_HEADER} Authorization ${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${AUTH_USAGE} 1 ${CONTENT_TYPE_PATCH} application/merge-patch+json +${INSTANTIATE_PERMITTED_SCOPE} vnflcm:v2:instantiate +${SCALE_PERMITTED_SCOPE} vnflcm:v2:scale +${SCALE_TO_LEVEL_PERMITTED_SCOPE} vnflcm:v2:scale_to_level +${CHANGE_FLAVOUR_PERMITTED_SCOPE} vnflcm:v2:change_flavour +${TERMINATE_PERMITTED_SCOPE} vnflcm:v2:terminate +${HEAL_PERMITTED_SCOPE} vnflcm:v2:heal +${CHANGE_EXT_CONN_PERMITTED_SCOPE} vnflcm:v2:change_ext_conn +${OPERATE_PERMITTED_SCOPE} vnflcm:v2:operate +${CREATE_SNAPSHOT_PERMITTED_SCOPE} vnflcm:v2:create_snapshot +${REVERT_TO_SNAPSHOT_PERMITTED_SCOPE} vnflcm:v2:revert_to_snapshot +${CHANGE_VNFPKG_PERMITTED_SCOPE} vnflcm:v2:change_vnfpkg +${VNF_INSTANCE_INFO_PERMITTED_SCOPE} vnflcm:v2:vnf_instance_info +${VNF_INSTANCE_INFO_READONLY_PERMITTED_SCOPE} vnflcm:v2:vnf_instance_info:readonly +${OP_OCCS_PERMITTED_SCOPE} vnflcm:v2:op_occs +${SUBSCRIPTIONS_PERMITTED_SCOPE} vnflcm:v2:subscriptions +${VNF_SNAPSHOT_INFO_PERMITTED_SCOPE} vnflcm:v2:vnf_snapshot_info +${VNF_STATE_SNAPSHOT_PERMITTED_SCOPE} vnflcm:v2:vnf_state_snapshot + +${INSTANTIATE_NOT_PERMITTED_SCOPE} vnflcm:v2:instantiate:invalid +${SCALE_NOT_PERMITTED_SCOPE} vnflcm:v2:scale:invalid +${SCALE_TO_LEVEL_NOT_PERMITTED_SCOPE} vnflcm:v2:scale_to_level:invalid +${CHANGE_FLAVOUR_NOT_PERMITTED_SCOPE} vnflcm:v2:change_flavour:invalid +${TERMINATE_NOT_PERMITTED_SCOPE} vnflcm:v2:terminate:invalid +${HEAL_NOT_PERMITTED_SCOPE} nflcm:v2:heal:invalid +${CHANGE_EXT_CONN_NOT_PERMITTED_SCOPE} vnflcm:v2:change_ext_conn:invalid +${OPERATE_NOT_PERMITTED_SCOPE} vnflcm:v2:operate:invalid +${CREATE_SNAPSHOT_NOT_PERMITTED_SCOPE} vnflcm:v2:create_snapshot:invalid +${REVERT_TO_SNAPSHOT_NOT_PERMITTED_SCOPE} vnflcm:v2:revert_to_snapshot:invalid +${CHANGE_VNFPKG_NOT_PERMITTED_SCOPE} vnflcm:v2:change_vnfpkg:invalid +${VNF_INSTANCE_INFO_NOT_PERMITTED_SCOPE} vnflcm:v2:vnf_instance_info:invalid +${VNF_INSTANCE_INFO_READONLY_NOT_PERMITTED_SCOPE} vnflcm:v2:vnf_instance_info:readonly:invalid +${OP_OCCS_NOT_PERMITTED_SCOPE} vnflcm:v2:op_occs:invalid +${SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} vnflcm:v2:subscriptions:invalid +${VNF_SNAPSHOT_INFO_NOT_PERMITTED_SCOPE} vnflcm:v2:vnf_snapshot_info:invalid +${VNF_STATE_SNAPSHOT_NOT_PERMITTED_SCOPE} vnflcm:v2:vnf_state_snapshot:invalid + ${apiRoot} / ${apiName} vnflcm ${apiMajorVersion} v2 diff --git a/requirements.txt b/requirements.txt index a5adb345..7df57b4f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,4 @@ robotframework-jsonlibrary==0.3 robotframework-jsonschemalibrary==1.0 robotframework-mockserver==0.0.7 robotframework-requests==0.7.1 +PyJWT==2.9.0 -- GitLab From febac3103fc4d556c2b4abe596edb741375fffa6 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 13 Sep 2024 17:29:19 +0500 Subject: [PATCH 10/30] editorial change of updating ChangeCurrentVNfPackageTask oauth not permitted testcase --- .../ChangeCurrentVNFPackageTask.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index 8860beef..7b05fd10 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -97,8 +97,8 @@ POST Change current VNF Package Task with permitted authorization scope POST Change current VNF Package Task with not permitted authorization scope [Documentation] Test ID: 7.3.1.37.8 - ... Test title: POST Change current VNF Package Task - ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with not permitted authorization scope. + ... Test title: POST Change current VNF Package Task with not permitted authorization scope + ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with not permitted authorization scope with not permitted authorization scope. ... Pre-conditions: none ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM -- GitLab From fd8cba6c3a495e912faf0854f5f2f32bd7f0c93e Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 13 Sep 2024 17:31:48 +0500 Subject: [PATCH 11/30] editorial change of updating CreateVNFSnapshotTask oauth permitted testcase objective --- SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index 46afa0e0..f1e87e46 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -111,7 +111,7 @@ DELETE Create VNF Snapshot Task - Method not implemented POST Create VNF Snapshot Task with permitted authorization scope [Documentation] Test ID: 7.3.1.38.9 ... Test title: POST Create VNF Snapshot Task with permitted authorization scope - ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with permitted authorization scope with permitted authorization scope. + ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with permitted authorization scope. ... Pre-conditions: none ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM -- GitLab From c7ae2d5a16c58d934268c79f4db35f16315193f4 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 13 Sep 2024 17:37:14 +0500 Subject: [PATCH 12/30] editorial change in oauth testcase of IndividualSubscription, HealVNF, and FailOperationTask --- SOL003/VNFLifecycleManagement-API/FailOperationTask.robot | 4 ++-- SOL003/VNFLifecycleManagement-API/HealVNFTask.robot | 2 +- .../VNFLifecycleManagement-API/IndividualSubscription.robot | 4 ++-- .../VnfLcmMntOperationKeywords.robot | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index cd4fd6b1..dfb02cfb 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -111,8 +111,8 @@ POST Fail operation task with permitted authorization scope POST Fail operation task with not permitted authorization scope [Documentation] Test ID: 7.3.1.15.9 - ... Test title: POST Fail operation task with permitted authorization scope - ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation with permitted authorization scope + ... Test title: POST Fail operation task with not permitted authorization scope + ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index 46e771e0..324ee24f 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -111,7 +111,7 @@ POST Heal a vnfInstance with permitted authorization scope POST Heal a vnfInstance with not permitted authorization scope [Documentation] Test ID: 7.3.1.8.9 - ... Test title: POST Heal a vnfInstance with permitted authorization scope + ... Test title: POST Heal a vnfInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method heal a VNF instance with not permitted authorization scope ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index 5275e77d..a18e72e4 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -95,8 +95,8 @@ GET Individual Subscription with permitted authorization scope GET Individual Subscription with not permitted authorization scope [Documentation] Test ID: 7.3.1.18.8 - ... Test title: GET Individual Subscription with permitted authorization scope - ... Test objective: The objective is to test the Get individual subscription with permitted authorization scope + ... Test title: GET Individual Subscription with not permitted authorization scope + ... Test objective: The objective is to test the Get individual subscription with not permitted authorization scope ... Pre-conditions: none ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 0afd0efb..de62a788 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1575,7 +1575,7 @@ Post Fail operation not existing Set Global Variable ${response} ${outputResponse} Post Fail operation with permitted authorization scope - Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} @@ -1584,7 +1584,7 @@ Post Fail operation with permitted authorization scope ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Fail operation with not permitted authorization scope - Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} -- GitLab From f83b09a7361b327917bf6c11db905df59f2246bf Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Sat, 14 Sep 2024 20:24:21 +0500 Subject: [PATCH 13/30] editorial change of updating Revert To VNF Snapshot oauth test title and objective --- .../VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index 0fd1584a..8dce5412 100644 --- a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -98,7 +98,7 @@ DELETE Revert to VNF Snapshot Task - Method not implemented POST Revert to VNF Snapshot Task with permitted authorization scope [Documentation] Test ID: 7.3.1.39.8 ... Test title: POST Revert to VNF Snapshot Task with permitted authorization scope - ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with permitted authorization scope with permitted authorization scopes. + ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with permitted authorization scope. ... Pre-conditions: none ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM @@ -111,7 +111,7 @@ POST Revert to VNF Snapshot Task with permitted authorization scope POST Revert to VNF Snapshot Task with not permitted authorization scope [Documentation] Test ID: 7.3.1.39.9 ... Test title: POST Revert to VNF Snapshot Task with not permitted authorization scope - ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with not permitted authorization scope with not permitted authorization scope. + ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with not permitted authorization scope. ... Pre-conditions: none ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM -- GitLab From ef9e1deaa8ebbffc08120274a6e4c11bef53aa92 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 16 Sep 2024 10:20:57 +0500 Subject: [PATCH 14/30] editorial change of upadting OAuth Test case title, objective and log --- .../IndividualVNFInstance.robot | 4 ++-- .../VnfLcmMntOperationKeywords.robot | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 0d2ee939..c63baa78 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -129,7 +129,7 @@ Get Information about an individual VNF Instance - Not Found Check HTTP Response Body Json Schema Is ProblemDetails Get Information about an individual VNF Instance with permitted authorization scope - [Documentation] Test ID: 7.3.1.2.2 + [Documentation] Test ID: 7.3.1.2.10 ... Test title: Get Information about an individual VNF Instance with permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope ... Pre-conditions: none @@ -144,7 +144,7 @@ Get Information about an individual VNF Instance with permitted authorization sc Check HTTP Response Body vnfInstance content against VNF Descriptor Get Information about an individual VNF Instance with not permitted authorization scope - [Documentation] Test ID: 7.3.1.2.2 + [Documentation] Test ID: 7.3.1.2.11 ... Test title: Get Information about an individual VNF Instance with not permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope ... Pre-conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index de62a788..c5ccf660 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -256,7 +256,7 @@ POST Cancel operation task not existing Set Global Variable ${response} ${outputResponse} POST Cancel operation task with permitted authorization scope - Log Cancel an ongoing VNF lifecycle operation + Log Cancel an ongoing VNF lifecycle operation with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} @@ -267,7 +267,7 @@ POST Cancel operation task with permitted authorization scope Set Global Variable ${response} ${outputResponse} POST Cancel operation task with not permitted authorization scope - Log Cancel an ongoing VNF lifecycle operation + Log Cancel an ongoing VNF lifecycle operation with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${Authorization_Token}"} @@ -1317,7 +1317,7 @@ Get VNF LCM Operation occurrences with exclude_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} GET VNF LCM Operation occurrences with permitted authorization scope - Log Query status information about multiple VNF lifecycle management operation occurrences. + Log Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Set Headers {"Accept":"${ACCEPT}"} @@ -1327,7 +1327,7 @@ GET VNF LCM Operation occurrences with permitted authorization scope ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences with not permitted authorization scope - Log Query status information about multiple VNF lifecycle management operation occurrences. + Log Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Set Headers {"Accept":"${ACCEPT}"} @@ -1373,7 +1373,7 @@ Get Individual VNF LCM Operation occurrences ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM Operation occurrences with permitted authorization scope - Log Query status information about multiple VNF lifecycle management operation occurrences. + Log Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope. Set Headers {"Accept":"${ACCEPT}"} ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} @@ -1383,7 +1383,7 @@ Get Individual VNF LCM Operation occurrences with permitted authorization scope ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM Operation occurrences with not permitted authorization scope - Log Query status information about multiple VNF lifecycle management operation occurrences. + Log Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope. Set Headers {"Accept":"${ACCEPT}"} ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} @@ -2590,7 +2590,7 @@ DELETE individual VNF Snapshot - CONFLICT Set Global Variable ${response} ${outputResponse} GET individual VNF Snapshot with permitted authorization scope - log Trying to get information about an individual VNF snapshot + log Trying to get information about an individual VNF snapshot with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Set Headers {"Accept":"${ACCEPT}"} @@ -2601,7 +2601,7 @@ GET individual VNF Snapshot with permitted authorization scope Set Global Variable ${response} ${outputResponse} GET individual VNF Snapshot with not permitted authorization scope - log Trying to get information about an individual VNF snapshot + log Trying to get information about an individual VNF snapshot with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Set Headers {"Accept":"${ACCEPT}"} -- GitLab From 5121f2704b60dd41f66609e5e994e7907c6e2087 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 25 Sep 2024 09:03:41 +0000 Subject: [PATCH 15/30] updated tosca reference descriptor - resolve SOL WG comment/feedback --- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index 603b1887..250f1c70 100644 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -1,8 +1,8 @@ -tosca_definitions_version: tosca_simple_yaml_1_2 +tosca_definitions_version: tosca_simple_yaml_1_3 description: "TST010 reference VNF-B" imports: - - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml + - https://forge.etsi.org/rep/nfv/SOL001/raw/v4.4.1/etsi_nfv_sol001_vnfd_types.yaml metadata: descriptor_id: "VNF-B" @@ -44,7 +44,7 @@ node_types: type: list entry_schema: type: string - default: [ 'etsivnfm:v2.3.1' ] + default: [ 'etsivnfm:v4.5.1' ] interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" @@ -162,4 +162,4 @@ topology_template: terminate: implementation: terminate-example.yaml operate: - implementation: operate-example.yaml \ No newline at end of file + implementation: operate-example.yaml -- GitLab From a6166d2e91d385f93ad7bd3bfc00172b7c83e305 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Tue, 20 Aug 2024 15:30:37 +0500 Subject: [PATCH 16/30] Update SOL003 document version in all testcases of VNFLifecycleManagement API --- .../CancelOperationTask.robot | 14 +++---- .../CancelOperationWorkflow.robot | 4 +- .../ChangeCurrentVNFPackageTask.robot | 12 +++--- .../ChangeExternalVNFConnectivityTask.robot | 10 ++--- ...hangeExternalVNFConnectivityWorkflow.robot | 2 +- .../ChangeVNFFlavourTask.robot | 14 +++---- .../ChangeVNFFlavourWorkflow.robot | 2 +- .../CreateVNFSnapshotTask.robot | 16 ++++---- .../CreateVNFWorkflow.robot | 2 +- .../DeleteVNFWorkflow.robot | 2 +- .../FailOperationTask.robot | 14 +++---- .../FailOperationWorkflow.robot | 2 +- .../HealVNFTask.robot | 14 +++---- .../HealVNFWorkflow.robot | 2 +- .../IndividualSubscription.robot | 12 +++--- .../IndividualVNFInstance.robot | 18 ++++----- .../IndividualVNFSnapshot.robot | 18 ++++----- .../IndividualVnfLcmOperationOccurence.robot | 12 +++--- .../InstantiateVNFTask.robot | 12 +++--- .../InstantiateVNFTaskWorkflow.robot | 6 +-- .../ModifyVNFInformationWorkflow.robot | 2 +- .../NotificationEndpoint.robot | 6 +-- .../Notifications.robot | 8 ++-- .../OperateVNFTask.robot | 14 +++---- .../OperateVNFWorkflow.robot | 2 +- .../RetryOperationTask.robot | 14 +++---- .../RetryOperationWorkflow.robot | 4 +- .../RevertToVNFSnapshotTask.robot | 14 +++---- .../RollBackOperationWorkflow.robot | 4 +- .../RollbackOperationTask.robot | 14 +++---- .../ScaleVNFTask.robot | 14 +++---- .../ScaleVNFToLevelTask.robot | 16 ++++---- .../ScaleVNFToLevelWorkflow.robot | 2 +- .../ScaleVNFWorkflow.robot | 2 +- .../Subscriptions.robot | 24 +++++------ .../TerminateVNFTask.robot | 12 +++--- .../TerminateVNFWorkflow.robot | 2 +- .../VNFInstances.robot | 40 +++++++++---------- .../VNFSnapshots.robot | 30 +++++++------- .../VNFStateSnapshot.robot | 18 ++++----- .../VnfLcmOperationOccurences.robot | 30 +++++++------- 41 files changed, 230 insertions(+), 230 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index 5482d601..eccb1e68 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -12,7 +12,7 @@ POST Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance status equal to FAILED_TEMP @@ -25,7 +25,7 @@ POST Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state ... Pre-conditions: The "VNF LCM operation occurrence" is not in STARTING, PROCESSING or ROLLING_BACK state - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Cancel operation task Not Found ... Test title: POST Cancel operation task Not Found ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot index f0dd71e4..393779ec 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationWorkflow.robot @@ -18,7 +18,7 @@ Cancel a VNF LCM Operation - STARTING ... Test title: Cancel a VNF LCM Operation - STARTING ... Test objective: The objective is to test the workflow for Cancelling a VNF LCM Operation being in the STARTING state ... Pre-conditions: The VNF lifecycle management operation occurrence is in STARTING state. NFVO is subscribed to VNF LCM Operation Occurrence notifications (Test ID 5.4.20.1) - ... Reference: Clause 5.4.17 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.17 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state @@ -34,7 +34,7 @@ Cancel a VNF LCM Operation - PROCESSING - ROLLING_BACK ... Test title: Cancel a VNF LCM Operation - PROCESSING - ROLLING_BACK ... Test objective: The objective is to test the workflow for Cancelling a VNF LCM Operation being either in the PROCESSIONG or ROLLING_BACK state ... Pre-conditions: The VNF lifecycle management operation occurrence is in PROCESSING or ROLLING_BACK state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index e9569984..e6eef538 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -13,7 +13,7 @@ POST Change current VNF Package Task ... Test title: POST Change current VNF Package Task ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change current VNF Package Task - Conflict ... Test title: POST Change current VNF Package Task - Conflict ... Test objective: The objective is to test that the POST method cannot change the current VNF package task when another lifecycle management operation is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: There is another lifecycle management operation ongoing. ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Change current VNF Package Task - Method not implemented ... Test title: GET Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Change current VNF Package Task - Method not implemented ... Test title: PUT Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Change current VNF Package Task - Method not implemented ... Test title: PATCH Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Change current VNF Package Task - Method not implemented ... Test title: DELETE Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 5c6a9b2d..434d1a5d 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -12,7 +12,7 @@ POST Change external VNF connectivity ... Test title: POST Change external VNF connectivity ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ GET Change external VNF connectivity - Method not implemented ... Test title: GET Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT Change external VNF connectivity - Method not implemented ... Test title: PUT Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH Change external VNF connectivity - Method not implemented ... Test title: PATCH Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE Change external VNF connectivity - Method not implemented ... Test title: DELETE Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot index f419f744..29b1c2b5 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityWorkflow.robot @@ -17,7 +17,7 @@ Change external connectivity of VNF Workflow ... Test title: Change external connectivity of VNF Workflow ... Test objective: The objective is to change the external connectivity of a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.4.11 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.11 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. The VNFD supports the external connectivity change ... Post-Conditions: VNF instance still in INSTANTIATED state and external connectivity of the VNF is changed diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index c0ea9230..2cf454be 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -12,7 +12,7 @@ POST Change deployment flavour of a vnfInstance ... Test title: POST Change deployment flavour of a vnfInstance ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource. (VNF instance resource is not in NOT-INSTANTIATED state) ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Test title: POST Change deployment flavour of a vnfInstance Not Found ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Change deployment flavour VNFInstance - Method not implemented ... Test title: GET Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Change deployment flavour VNFInstance - Method not implemented ... Test title: PUT Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Change deployment flavour VNFInstance - Method not implemented ... Test title: PATCH Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Test title: DELETE Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot index 178c9591..ec093fd6 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourWorkflow.robot @@ -17,7 +17,7 @@ Change VNF Flavour Workflow ... Test title: Change VNF Flavour Workflow ... Test objective: The objective is to test the workflow for a change flavour of an existing VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state . NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.7 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.7 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: Multiple flavours are supported for the VNF (as capability in the VNFD). NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance still in INSTANTIATED state and the flavour is changed diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index ad90d751..ecfe31df 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -13,7 +13,7 @@ POST Create VNF Snapshot Task ... Test title: POST Create VNF Snapshot Task ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Create VNF Snapshot Task - NOT FOUND ... Test title: POST Create VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request for a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: Task is not supported for the VNF instance represented by the parent resource. ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Create VNF Snapshot Task - CONFLICT ... Test title: POST Create VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNF instance is in NOT_INSTANTIATED state. ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Create VNF Snapshot Task - Unprocessable Content ... Test title: POST Create VNF Snapshot Task - Unprocessable Content ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the provided identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Create VNF Snapshot Task - Method not implemented ... Test title: GET Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PUT Create VNF Snapshot Task - Method not implemented ... Test title: PUT Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Create VNF Snapshot Task - Method not implemented ... Test title: PATCH Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE Create VNF Snapshot Task - Method not implemented ... Test title: DELETE Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot index 96ff1013..33167b5d 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFWorkflow.robot @@ -17,7 +17,7 @@ Create VNF Instance Resource ... Test title: Create VNF Instance workflow ... Test objective: The objective is to test the workflow for the creation of a new VNF instance resource. ... Pre-conditions: NFVO is subscribed to VNF Identifier Creation notifications - ... Reference: Clause 5.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF instance resource has been created in "NOT_INSTANTIATED" state. diff --git a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot index 243b8c1f..c75a6ee3 100644 --- a/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/DeleteVNFWorkflow.robot @@ -17,7 +17,7 @@ Delete VNF Instance Resource ... Test title: Delete VNF Instance workflow ... Test objective: The objective is to test the workflow for the deleteion of an existing VNF instance resource ... Pre-conditions: The VNF Instance resource is in NOT_INSTANTIATED state. NFVO is subscribed to VNF Identifier Creation notifications - ... Reference: Clause 5.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF instance resource is deleted on the VNFM. diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index ad99f5a2..604c15bd 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -12,7 +12,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF resource state is FINALLY_FAILED @@ -26,7 +26,7 @@ Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test title: Post Fail operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Post Fail operation task Not Found ... Test title: Post Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -64,7 +64,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -76,7 +76,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: @@ -88,7 +88,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot index 5f2b0b7f..ce239c6e 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationWorkflow.robot @@ -17,7 +17,7 @@ Fail a VNF LCM Operation Workflow ... Test title: Fail a VNF LCM Operation Workflow ... Test objective: The objective is to test the workflow for a Fail VNF LCM Operation ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.16 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.16 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED state diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index acdca8ae..8cdfb001 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -12,7 +12,7 @@ POST Heal a vnfInstance ... Test title: POST Heal a vnfInstance ... Test objective: The objective is to test that POST method heal a VNF instance ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Heal a vnfInstance Not Found ... Test title: POST Heal a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Heal VNFInstance - Method not implemented ... Test title: GET Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Heal VNFInstance - Method not implemented ... Test title: PUT Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Heal VNFInstance - Method not implemented ... Test title: PATCH Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Heal VNFInstance - Method not implemented ... Test title: DELETE Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot index 7e5981a3..2f6fa856 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFWorkflow.robot @@ -17,7 +17,7 @@ Heal a VNF Instance ... Test title: Heal a VNF Instance ... Test objective: The objective is to heal a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.4.9 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.9 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Heal a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index bbe48b8e..5585c8d1 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the Get individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: subscription deleted from VNFM @@ -72,7 +72,7 @@ GET Individual Subscription - Not Found ... Test title: GET Individual Subscription - Not Found ... Test objective: The objective is to test the retrieval of individual subscription fails when subscription is not present ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index f9c88f3d..1be74b1d 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -16,7 +16,7 @@ Post Individual VNFInstance - Method not implemented ... Test title: Post Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ Get Information about an individual VNF Instance ... Test title: Get Information about an individual VNF Instance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -43,7 +43,7 @@ PUT Individual VNFInstance - Method not implemented ... Test title: PUT Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ PATCH Individual VNFInstance ... Test title: PATCH Individual VNFInstance ... Test objective: This method modifies an individual VNF instance resource ... Pre-conditions: an existing VNF instance resource - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance modified @@ -68,7 +68,7 @@ PATCH Individual VNFInstance Precondition failed ... Test title: PATCH Individual VNFInstance Precondition failed ... Test objective: The objective is to test that modification of a VNF instance resource fails when a precondition given in an HTTP request header is not fulfilled due to an ETag mismatch ... Pre-conditions: an existing VNF instance resource - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ PATCH Individual VNFInstance Conflict ... Test title: PATCH Individual VNFInstance Conflict ... Test objective: The objective is to test the conflict while modifying a VNF instance resource ... Pre-conditions: another LCM operation is ongoing - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance not modified @@ -94,7 +94,7 @@ DELETE Individual VNFInstance ... Test title: DELETE Individual VNFInstance ... Test objective: The objective is to delete a VNF instance ... Pre-conditions: the VNF instance resource is existing - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNFInstance deleted @@ -106,7 +106,7 @@ DELETE Individual VNFInstance Conflict ... Test title: DELETE Individual VNFInstance Conflict ... Test objective: The objective is to verify that the deletion cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resources are not deleted @@ -120,7 +120,7 @@ Get Information about an individual VNF Instance - Not Found ... Test title: Get Information about an individual VNF Instance - Not Found ... Test objective: The objective is to test that the retrieval of an individual VNF Instance fails when instance is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index 6242a630..f4647a03 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -7,7 +7,7 @@ POST Individual VNF Snapshot - Method not implemented ... Test title: POST Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test objective: The objective is to GET information about an individual VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET Information about an individual VNF Snapshot - NOT FOUND ... Test title: GET Information about an individual VNF Snapshot - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot fails when using an invalid resource identifier. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ PUT Individual VNF Snapshot - Method not implemented ... Test title: PUT Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF Snapshot not modified @@ -58,7 +58,7 @@ PATCH Individual VNF Snapshot - Success ... Test title: PATCH Individual VNF Snapshot - Success ... Test objective: The objective is to test that PATCH method successfully modifies an individual VNF Snapshot resource ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF Snapshot modified @@ -72,7 +72,7 @@ PATCH Individual VNF Snapshot - Conflict ... Test title: PATCH Individual VNF Snapshot - Success ... Test objective: The objective is to test that PATCH method cannot modify an individual VNF Snapshot resource due to the fact that another modification is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The Individual VNF Snapshot resource is currently being modified due to an underlying VNF snapshot operation. ... Post-Conditions: none @@ -85,7 +85,7 @@ PATCH Individual VNF Snapshot - Precondition Failed ... Test title: PATCH Individual VNF Snapshot - Precondition Failed ... Test objective: The objective is to that the modification of individual VNF Snapshot fails because precondition given in an HTTP request header is not fulfilled due to an ETag mismatch. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF snapshot is not modified @@ -98,7 +98,7 @@ DELETE Individual VNF Snapshot ... Test title: DELETE Individual VNF Snapshot ... Test objective: The objective is to delete a VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF Snapshot deleted @@ -111,7 +111,7 @@ DELETE Individual VNF Snapshot - Conflict ... Test title: DELETE Individual VNF Snapshot Conflict ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF Snapshot resource. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNF snapshot is in use by some operation such as reverting a VNF instance to a VNF snapshot or creating a VNF snapshot package. ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 73ab723f..8288f8d2 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -11,7 +11,7 @@ Post Individual VNF LCM Operation occurrences - Method not implemented ... Test title: Post Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ Get Individual VNF LCM Operation occurrences ... Test title: Get Individual VNF LCM Operation occurrences ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Individual VNF LCM Operation occurrences - Method not implemented ... Test title: PUT Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test title: PATCH Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE Individual VNF LCM Operation occurrences - Method not implemented ... Test title: DELETE Individual VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ Get Individual VNF LCM Operation occurrences - Not Found ... Test title: Get Individual VNF LCM Operation occurrences - Not Found ... Test objective: The objective is to test that the retrieval of VNF lifecycle management operation occurrence fails when instance is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 0d1d1acd..daa2dcae 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -13,7 +13,7 @@ Instantiate a vnfInstance ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ Instantiate a vnfInstance Conflict ... Test title: Post Instantiate Individual VNFInstance ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Instantiate VNFInstance - Method not implemented ... Test title: GET Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Instantiate VNFInstance - Method not implemented ... Test title: PUT Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Instantiate VNFInstance - Method not implemented ... Test title: PATCH Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Instantiate VNFInstance - Method not implemented ... Test title: DELETE Instantiate Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot index db6caddb..36ff993a 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTaskWorkflow.robot @@ -20,7 +20,7 @@ VNF Instantiation ... Test title: VNF Instantiation workflow ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state @@ -38,7 +38,7 @@ VNF Instantiation with attribute instantiationLevelId ... Test title: VNF Instantiation workflow with attribute instantiationLevelId ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state @@ -56,7 +56,7 @@ VNF Instantiation with attribute targetScaleLevelInfo ... Test title: VNF Instantiation workflow with attribute targetScaleLevelInfo ... Test objective: The objective is to test the workflow for the instantiation of a VNF instance ... Pre-conditions: VNF instance resources is already created. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: VNF instance in INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot index e700d2ca..0094b3c2 100644 --- a/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ModifyVNFInformationWorkflow.robot @@ -17,7 +17,7 @@ Modify info of a VNF Instance ... Test title: Update information about a VNF instance ... Test objective: The objective is to update information about a VNF instance. ... Pre-conditions: VNF instance is created - ... Reference: Clause 5.3.6 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.6 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Update information of a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance info is updated diff --git a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot index 81a032c2..f114036d 100644 --- a/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL003/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Notification ... Test title: VNF LCM Operation Occurrence Notification ... Test objective: The objective is to test that the POST request triggers VNF LCM Operation Occurrence Notification. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test that the POST request triggers VNF Identifier Creation Notification. ... Pre-conditions: A subscription for VNF identifier creation cotification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test that the POST request triggers VNF Identifier Deletion Notification. ... Pre-conditions: A subscription for VNF identifier deletion notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/Notifications.robot b/SOL003/VNFLifecycleManagement-API/Notifications.robot index 6f1a0c07..f29f871b 100644 --- a/SOL003/VNFLifecycleManagement-API/Notifications.robot +++ b/SOL003/VNFLifecycleManagement-API/Notifications.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Start Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Start Notification when a new VNF LCM operation is started in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ VNF LCM Operation Occurrence Result Notification ... Test title: VNF LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Result Notification when a VNF LCM operation is completed in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An VNF LCM operation is in progress, and a subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Creation Notification when a new VNF instance resource is created in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Deletion Notification when a VNF instance resource is deleted in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance resource is created, and a subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index f3b492c2..7f2f923e 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -14,7 +14,7 @@ POST Operate a vnfInstance ... Test title: POST Operate a vnfInstance ... Test objective: The objective is to test that POST method operate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Operate a vnfInstance Not Found ... Test title: POST Operate a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed currently, because the resource is not existing ... Pre-conditions: the VNF instance resource is in not existing - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Operate VNFInstance - Method not implemented ... Test title: GET Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Operate VNFInstance - Method not implemented ... Test title: PUT Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Operate VNFInstance - Method not implemented ... Test title: PATCH Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Operate VNFInstance - Method not implemented ... Test title: DELETE Operate a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot index 8927ca37..d6eeed1c 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFWorkflow.robot @@ -18,7 +18,7 @@ Operate a VNF Instance ... Test title: Operate a VNF Instance ... Test objective: The objective is to test the workflow of operational change of a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: change the operational state of a VNF instance is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and the operational state is changed diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index 3dea0a18..9f597eca 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -15,7 +15,7 @@ Post Retry operation task ... Test title: Post Retry operation task ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Post Retry operation task Conflict (Not-FAILED_TEMP) ... Test title: Post Retry operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that the retry operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. (i.e. the VNF instance resource is not in FAILED_TEMP state) ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ Post Retry operation task Not Found ... Test title: Post Retry operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -55,7 +55,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.14.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index 8573e199..0c40c970 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -15,7 +15,7 @@ Retry VNF LCM Operation - Successful ... Test title: Retry VNF LCM Operation - Successful ... Test objective: The objective is to test the workflow for a successful Retry VNF LCM Operation and the status notifications ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in COMPLETED state @@ -30,7 +30,7 @@ Retry VNF LCM Operation - Unsuccessful ... Test title: Retry VNF LCM Operation - Unsuccessful ... Test objective: The objective is to test the workflow for an unsuccesful Retry VNF LCM Operation and the status notifications ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index d822f3c2..06fbc49b 100644 --- a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -13,7 +13,7 @@ POST Revert to VNF Snapshot Task ... Test title: POST Revert to VNF Snapshot Task ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Revert to VNF Snapshot Task - NOT FOUND ... Test title: POST Revert to VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: Task is not supported for the VNF instance represented by the parent resource. ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Revert to VNF Snapshot Task - CONFLICT ... Test title: POST Revert to VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNF instance is in NOT_INSTANTIATED state. ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Revert to VNF Snapshot Task - Method not implemented ... Test title: GET Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Revert to VNF Snapshot Task - Method not implemented ... Test title: PUT Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Revert to VNF Snapshot Task - Method not implemented ... Test title: PATCH Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Revert to VNF Snapshot Task - Method not implemented ... Test title: DELETE Revert to sVNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index 7d12061f..d7c5083d 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -17,7 +17,7 @@ Rollback a VNF LCM Operation - Successful ... Test title: Rollback VNF LCM Operation - Successful ... Test objective: The objective is to test the workflow for a Rolling Back a VNF LCM Operation and the operation is successful ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.11 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.11 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state @@ -32,7 +32,7 @@ Rollback VNF LCM Operation - Unsuccessful ... Test title: Rollback VNF LCM Operation - Unsuccessful ... Test objective: The objective is to test the workflow for a Rollback VNF LCM Operation and the operation is not successful ... Pre-conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state. NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.10 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index 445bb0a5..fee1ca8c 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -14,7 +14,7 @@ Post Rollback operation task ... Test title: Post Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method initiates a rollback on a VNF lifecycle operation ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index 8d0776e3..d9b537c3 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -13,7 +13,7 @@ POST Scale a vnfInstance ... Test title: POST Scale a vnfInstance ... Test objective: The objective is to scale a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, because the VNF instance resource is not found. ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Scale VNFInstance - Method not implemented ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Scale VNFInstance - Method not implemented ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Scale VNFInstance - Method not implemented ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Scale VNFInstance - Method not implemented ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 7f2fb029..3dcc0dc4 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -12,7 +12,7 @@ POST Scale a vnfInstance to level - with InstantiationLevelId attribute ... Test title: POST Scale a vnfInstance to level ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the scale operation cannot be executed because the resource is not instantiated ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ Scale a vnfInstance Not Found ... Test title: Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed , because the VNF instance resource cannot be found. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Scale to level VNFInstance - Method not implemented ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Scale to level VNFInstance - Method not implemented ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Scale to level VNFInstance - Method not implemented ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Scale to level VNFInstance - Method not implemented ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Scale a vnfInstance to level - with scaleInfo attribute ... Test title: POST Scale a vnfInstance to level with scaleInfo attribute ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot index c515f53b..1635281a 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelWorkflow.robot @@ -15,7 +15,7 @@ VNF Instance Scale To Level ... Test title: VNF Instance Scale To Level workflow ... Test objective: The objective is to test the workflow for the scale to level of a VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state . NFVO is subscribed to VNF LCM Operation Occurrence notifications - ... Reference: Clause 5.4.6 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.6 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Scale operation is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and VNF is scaled to the new level diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot index 73897ccd..e18f5b86 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFWorkflow.robot @@ -15,7 +15,7 @@ VNF Instance Scale Out ... Test title: VNF Instance Scale Out workflow ... Test objective: The objective is to test the workflow for the scaling out a VNF instance ... Pre-conditions: VNF instance in INSTANTIATED state (Test ID 5.4.4.1). NFVO is subscribed to VNF LCM Operation Occurrence notifications (Test ID 5.4.20.1) - ... Reference: Clause 5.4.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. Scale operation is supported for the VNF (as capability in the VNFD) ... Post-Conditions: VNF instance still in INSTANTIATED state and VNF is scaled out diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index 81fabaf0..40e9624a 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The POST method creates a new subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -28,7 +28,7 @@ Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The objective is to test request to create a duplicate (same callbackurl and filter) subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: duplication is supported by SUT ... Post-Conditions: in response header Location shall not be null @@ -41,7 +41,7 @@ Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The objective is to test the request that does not create a duplicate (same callbackurl and filter) subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: duplication is not supported by SUT ... Post-Conditions: in response header Location shall not be null @@ -54,7 +54,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Subscription - Filter ... Test title: GET Subscriptions - Filter ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using an invalid filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -162,7 +162,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -174,7 +174,7 @@ GET Subscriptions as a Paged Response ... Test title: GET Subscriptions as a Paged Response ... Test objective: The objective is Get the list of active subscriptions as a Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none @@ -187,7 +187,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of the list of active subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -213,7 +213,7 @@ GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter ... Test title: GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to Get the list of active subscriptions as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving subscriptions as a paged response has been successfully issued (Test ID 7.3.1.17.14) - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index b21a1301..23fad768 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -13,7 +13,7 @@ POST Terminate a vnfInstance ... Test title: POST Terminate a vnfInstance ... Test objective: The objective is to test that POST method terminate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the vnf Instance cannot be terminated ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Terminate VNFInstance - Method not implemented ... Test title: GET Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ PUT Terminate VNFInstance - Method not implemented ... Test title: PUT Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PATCH Terminate VNFInstance - Method not implemented ... Test title: PATCH Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ DELETE Terminate VNFInstance - Method not implemented ... Test title: DELETE Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot index d458119a..7e71c073 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFWorkflow.robot @@ -15,7 +15,7 @@ Terminate a VNF Instance ... Test title: Terminate a VNF Instance ... Test objective: The objective is to terminate a VNF instance. ... Pre-conditions: VNF instance in INSTANTIATED state - ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: NFVO is able to receive notifications from VNFM. ... Post-Conditions: VNF instance in NOT_INSTANTIATED state diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index 3bb82db5..47bb2e9a 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -13,7 +13,7 @@ POST Create a new vnfInstance ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance created @@ -26,7 +26,7 @@ GET information about multiple VNF instances ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -38,8 +38,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based [Documentation] Test ID: 7.3.1.1.3 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to query information about multiple VNF instances with Invalid attribute-based filtering parameters - ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.4.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Pre-conditions: A VNF is instantiated, a bad filter selector (filter selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.5.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,8 +52,8 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec [Documentation] Test ID: 7.3.1.1.4 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector ... Test objective: The objective is to query information about multiple VNF instances with Invalid attribute selector - ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.4.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.5.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ GET information about multiple VNF instances with "all_fields" attribute selecto ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ GET information about multiple VNF instances with "exclude_default" attribute se ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ GET information about multiple VNF instances with "fields" attribute selector ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PUT multiples VNFInstances - Method not implemented ... Test title: PUT multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ PATCH multiples VNFInstances - Method not implemented ... Test title: PATCH multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ DELETE VNFInstances - Method not implemented ... Test title: DELETE multiples VNFInstances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -154,7 +154,7 @@ GET information about multiple VNF instances to get Paged Response ... Test title: GET information about multiple VNF instances to get Paged Response ... Test objective: The objective is to query information about multiple VNF instances to get Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the subscriptions resources ... Post-Conditions: none @@ -167,7 +167,7 @@ GET information about multiple VNF instances as a Paged Response with nextpage_o ... Test title: GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF instances as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving multiple VNF instances as a paged response has been successfully issued (Test ID 7.3.1.1.12) - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF instance resources ... Post-Conditions: none @@ -178,8 +178,8 @@ GET information about multiple VNF instances - Bad Request Response too Big [Documentation] Test ID: 7.3.1.1.13 ... Test title: GET information about multiple VNF instances - Bad Request Response too Big ... Test objective: The objective is to query information about multiple VNF instances fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. - ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.4.1). - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Pre-conditions: A VNF is instantiated, a bad attribute selector (attribute selectors are listed in Table 5.4.2.3.2-1 - ETSI GS NFV-SOL 003 [1] v4.5.1). + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -192,7 +192,7 @@ GET information about multiple VNF instances with "exclude_default" and "fields" ... Test title: GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -205,7 +205,7 @@ POST Create a new vnfInstance - Unprocessable Content ... Test title: POST Create a new vnfInstance - Unprocessable Content ... Test objective: The objective is to test that correct error code is returned when VNF package referenced by the "vnfdId" attribute in the "CreateVnfRequest" structure is not in the "ENABLED" state or does not exist. ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNF package referenced by the "vnfdId" attribute in the "CreateVnfRequest" structure is not in the "ENABLED" state or does not exist. ... Post-Conditions: none @@ -218,7 +218,7 @@ GET information about multiple VNF instances using Filter ... Test title: GET information about multiple VNF instances using Filter ... Test objective: The objective is to query information about multiple VNF instances using filter ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot index 031f8b86..a34e4fc8 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -7,7 +7,7 @@ POST Create a new VNF Snapshot ... Test title: POST Create a new VNF Snapshot ... Test objective: The objective is to create a new VNF snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF snapshot is created @@ -21,7 +21,7 @@ GET information about multiple VNF Snapshots ... Test title: GET information about multiple VNF Snapshots ... Test objective: The objective is to get information about multiples VNF snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -34,7 +34,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute-based ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -47,7 +47,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute selec ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ GET information about multiple VNF Snapshots with "all_fields" attribute selecto ... Test title: GET information about multiple VNF Snapshots with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ GET information about multiple VNF Snapshots with "exclude_default" attribute se ... Test title: GET information about multiple VNF Snapshots with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ GET information about multiple VNF Snapshots with "fields" attribute selector ... Test title: GET information about multiple VNF Snapshots with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ GET information about multiple VNF Snapshots with "exclude_default" and "fields" ... Test title: GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ GET information about multiple VNF Snapshots with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF Snapshots with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -125,7 +125,7 @@ GET VNF Snapshots - Bad Request Response too Big ... Test title: GET VNF Snapshots - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshots list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM does not support paged response. ... Post-Conditions: none @@ -138,7 +138,7 @@ GET VNF Snapshots as Paged Response ... Test title: GET VNF Snapshots as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshots as paged response. ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM supports paged response. ... Post-Conditions: none @@ -151,7 +151,7 @@ PUT VNF Snapshots - Method not implemented ... Test title: PUT VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -163,7 +163,7 @@ PATCH VNF Snapshots - Method not implemented ... Test title: PATCH VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -175,7 +175,7 @@ DELETE VNF Snapshots - Method not implemented ... Test title: DELETE VNF Snapshots - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF instance not deleted @@ -187,7 +187,7 @@ GET information about multiple VNF Snapshots using Filter ... Test title: GET information about multiple VNF Snapshots using Filter ... Test objective: The objective is to get information about multiples VNF snapshots using filter ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot index 670775da..67da2fae 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot @@ -7,7 +7,7 @@ POST VNF State Snapshot - Method not implemented ... Test title: POST VNF State Snapshot - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -19,7 +19,7 @@ GET VNF State Snapshot - Complete File ... Test title: GET Information about an individual VNF State Snapshot - Complete File ... Test objective: The objective is to fetch the whole content of a VNF State Snapshot using GET method. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -32,7 +32,7 @@ GET VNF State Snapshot - Partial Content ... Test title: GET VNF State Snapshot - Partial Content ... Test objective: The objective is to fetch partial content of a VNF State Snapshot by sending a range request using GET method. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM supports range requests ... Post-Conditions: none @@ -46,7 +46,7 @@ GET VNF State Snapshot - Range Request Not Supported ... Test title: GET VNF State Snapshot - Range Request Not Supported ... Test objective: The objective is to test that the whole content of a VNF State Snapshot is delivered even with a range request when VNFM does not support range requests. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM does not support range requests ... Post-Conditions: none @@ -60,7 +60,7 @@ GET VNF State Snapshot - Range Not Satisfiable ... Test title: GET VNF State Snapshot - Range Not Satisfiable ... Test objective: The objective is to test that an error is returned when the byte range passed in the "Range" header does not match any available byte range in the VNF State Snapshot package file. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: VNFM supports range requests ... Post-Conditions: none @@ -72,7 +72,7 @@ GET VNF State Snapshot - Conflict ... Test title: GET VNF State Snapshot - Conflict ... Test objective: The objective is to test that an error is returned when there is a conflict with the state of the VNF snapshot resource. ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: Typically, this is due to the fact that the VNF snapshot creation process is not completed. ... Post-Conditions: none @@ -84,7 +84,7 @@ PUT VNF State Snapshot - Method not implemented ... Test title: PUT VNF State Snapshot - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: VNF State Snapshot Package not modified @@ -96,7 +96,7 @@ PATCH VNF State Snapshot - Method Not implemented ... Test title: PATCH VNF State Snapshot ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -108,7 +108,7 @@ DELETE VNF State Snapshot - Method Not implemented ... Test title: DELETE VNF State Snapshot - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.25.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.25.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index df021760..f3c71a9d 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -11,7 +11,7 @@ POST VNF LCM Operation occurrences - Method not implemented ... Test title: POST VNF LCM Operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET status information about multiple VNF LCM Operation OCC ... Test title: GET status information about multiple VNF LCM Operation OCC ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ GET status information about multiple VNF LCM Operation OCC Bad Request Invalid ... Test title: GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ GET status information about multiple VNF LCM Operation OCC Bad Request Invalid ... Test title: GET status information about multiple VNF LCM Operation OCC Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ GET status information about multiple VNF LCM Operation OCC with "exlude_default ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ GET status information about multiple VNF LCM Operation OCC with "fields" ... Test title: GET status information about multiple VNF LCM Operation OCC with "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_fields ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -114,7 +114,7 @@ PUT status information about multiple VNF LCM Operation OCC - Method not impleme ... Test title: PUT status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ PATCH status information about multiple VNF LCM Operation OCC - Method not imple ... Test title: PATCH status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -138,7 +138,7 @@ DELETE status information about multiple VNF LCM Operation OCC - Method not impl ... Test title: DELETE status information about multiple VNF LCM Operation OCC - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -150,7 +150,7 @@ GET status information about multiple VNF LCM Operation OCC to get Paged Respons ... Test title: GET status information about multiple VNF LCM Operation OCC to get Paged Response ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences to get a Paged Response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF lifecycle management operation occurrences resources ... Post-Conditions: none @@ -163,7 +163,7 @@ GET information about multiple VNF LCM Operation OCC as a Paged Response with ne ... Test title: GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF lifecycle management operation occurrences as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving multiple VNF lifecycle management operation occurrences as a paged response has been successfully issued (Test ID 7.3.1.11.12) - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports response paging for the VNF lifecycle management operation occurrences resources ... Post-Conditions: none @@ -175,7 +175,7 @@ GET status information about multiple VNF LCM Operation OCC - Bad Request Respon ... Test title: GET status information about multiple VNF LCM Operation OCC - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -188,7 +188,7 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_defaul ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.4.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none -- GitLab From 5f976da49c55878a997232c545eff55dc16cd283 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Wed, 21 Aug 2024 10:36:21 +0500 Subject: [PATCH 17/30] Update vnfinstance datamodel as per clause 5.5.2.2 --- .../schemas/vnfInstance.schema.json | 887 +++++++++++++++--- .../schemas/vnfInstances.schema.json | 874 ++++++++++++++--- 2 files changed, 1531 insertions(+), 230 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 23b24a03..eb40fb23 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -54,7 +54,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -85,7 +87,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -116,7 +120,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -141,15 +147,299 @@ } } }, + "certificateInfo": { + "description": "This type provides input information related to certificate and certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateConfigurationInfo": { + "description": "This type provides input information related to certificate management.\n", + "type": "object", + "required": [ + "securityPolicy" + ], + "properties": { + "certificateBaseProfile": { + "description": "Information for certificate profile.", + "type": "array", + "items": { + "description": "NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\nThis type provides input information to override certificate base profile for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of certificates. See note.", + "type": "string" + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to the subject of the certificate.\nNOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of the certification target subject FQDN. Can be set empty when this certificate is used for encrypted communication using IP address. See note.\n", + "type": "string" + }, + "organization": { + "description": "Information of the certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of the certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of the certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of the certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of the certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "description": "Basic constraints of certificates. See note.", + "type": "string" + }, + "issuerAltName": { + "description": "Alternative name of issuer of certificates in this NS. See note.", + "type": "array", + "items": { + "type": "string" + } + }, + "subjectAltName": { + "description": "Alternative name of subject of certificates. Shall be present when this certificate is used for encrypted communication using IP address and subjectAltName attribute of CertificateBaseProfile in CertificateDesc of VNFD is empty (see ETSI GS NFV-IFA 011 [14], clause 7.1.19.4). See note.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "nameConstraints": { + "description": "Name constraints of certificates. See note.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.", + "type": "array", + "items": { + "description": "This type provides input information related to security policy for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "Allowed max validity period for certificates.", + "type": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "number" + } + } + } + }, + "delegationSupportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "cmfInfo": { + "description": "This type provides input information related to CMF for certificate management.\n", + "type": "object", + "required": [ + "id", + "endPoint", + "supportedProtocol" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "endPoint": { + "description": "End point of CMF instance.", + "type": "object", + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "link": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "supportedProtocol": { + "description": "Supported protocols by CMF instance.", + "type": "array", + "items": { + "description": "Supported protocol by CMF instance.", + "type": "string", + "enum": [ + "CMP", + "CMPv2", + "EST", + "SCEP" + ] + } + }, + "certificateChain": { + "description": "Certificate chain that this CMF provides.", + "type": "array", + "items": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "certificateContents": { + "description": "Information for contents of issued certificates. The information contained in this attribute may be updated over time during the VNF LCM, e.g., certificate(s) renewal.\n", + "type": "array", + "items": { + "description": "This type provides input information related to certificate content.\nNOTE: The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011 [10].\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate.", + "type": "string", + "enum": [ + "VNFCI_CERT", + "VNFOAM_CERT" + ] + }, + "supportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "version": { + "description": "A version.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate.", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate's signature.", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate's public key.", + "type": "string" + }, + "publicKey": { + "description": "Public key of this certificate.", + "type": "string" + }, + "certificateExtensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, "instantiationState": { "description": "The instantiation state of the VNF. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", "type": "string", - "enum": ["NOT_INSTANTIATED", "INSTANTIATED"] + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] }, "instantiatedVnfInfo": { "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", "type": "object", - "required": ["flavourId", "vnfState", "extCpInfo"], + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], "properties": { "flavourId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -158,7 +448,10 @@ "vnfState": { "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", "type": "string", - "enum": ["STARTED", "STOPPED"] + "enum": [ + "STARTED", + "STOPPED" + ] }, "scaleStatus": { "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", @@ -166,7 +459,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -189,7 +485,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -206,6 +505,14 @@ } } }, + "selectedDeployableModule": { + "description": "References a currently selected deployable module, as defined in the VNFD, that has already completed the instantiation of its VNFCs.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, "extCpInfo": { "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", "type": "array", @@ -213,16 +520,27 @@ "items": { "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "cpdId", "cpConfigId", "cpProtocolInfo"], + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], "oneOf": [ { - "required": ["associatedVnfcCpId"] + "required": [ + "associatedVnfcCpId" + ] }, { - "required": ["associatedVipCpId"] + "required": [ + "associatedVipCpId" + ] }, { - "required": ["associatedVnfVirtualLinkId"] + "required": [ + "associatedVnfVirtualLinkId" + ] } ], "properties": { @@ -248,30 +566,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -289,12 +620,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -312,7 +648,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -338,12 +677,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -390,6 +734,10 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -401,7 +749,10 @@ "items": { "description": "This type provides information related to virtual IP (VIP) CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["cpInstanceId", "cpdId"], + "required": [ + "cpInstanceId", + "cpdId" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -425,30 +776,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -466,12 +830,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -489,7 +858,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -515,12 +887,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -561,7 +938,12 @@ "items": { "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", "type": "object", - "required": ["cpInstanceId", "cpdId", "resourceHandle", "vduIds"], + "required": [ + "cpInstanceId", + "cpdId", + "resourceHandle", + "vduIds" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -572,7 +954,9 @@ "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -626,30 +1010,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -667,12 +1064,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -690,7 +1092,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -716,12 +1121,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -752,7 +1162,9 @@ "items": { "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", "type": "object", - "required": ["portInfo"], + "required": [ + "portInfo" + ], "properties": { "portInfo": { "description": "Service port numbers exposed by the virtual CP instance.\n", @@ -761,7 +1173,11 @@ "items": { "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", "type": "object", - "required": ["name", "port", "portConfigurable"], + "required": [ + "name", + "port", + "portConfigurable" + ], "properties": { "name": { "description": "The name of the port exposed by the virtual CP instance.\n", @@ -770,7 +1186,11 @@ "protocol": { "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", "type": "string", - "enum": ["TCP", "UDP", "SCTP"] + "enum": [ + "TCP", + "UDP", + "SCTP" + ] }, "port": { "description": "The L4 port number exposed by the virtual CP instance.\n", @@ -803,14 +1223,20 @@ "items": { "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", - "required": ["id", "resourceHandle", "currentVnfExtCpData"], + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -860,14 +1286,19 @@ "items": { "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -932,7 +1363,9 @@ "items": { "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", "type": "object", - "required": ["cpdId"], + "required": [ + "cpdId" + ], "properties": { "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -945,13 +1378,19 @@ "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { - "required": ["linkPortId"] + "required": [ + "linkPortId" + ] }, { - "required": ["cpProtocolData"] + "required": [ + "cpProtocolData" + ] }, { - "required": ["netAttDefResourceId"] + "required": [ + "netAttDefResourceId" + ] } ], "type": "object", @@ -982,7 +1421,9 @@ "items": { "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", @@ -997,21 +1438,31 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["fixedAddresses"] + "required": [ + "fixedAddresses" + ] }, { - "required": ["numDynamicAddresses"] + "required": [ + "numDynamicAddresses" + ] }, { - "required": ["ipAddressRange"] + "required": [ + "ipAddressRange" + ] } ], "properties": { @@ -1023,7 +1474,10 @@ "segmentationType": { "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", - "enum": ["VLAN", "INHERIT"] + "enum": [ + "VLAN", + "INHERIT" + ] }, "segmentationId": { "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", @@ -1034,12 +1488,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "fixedAddresses": { "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1086,12 +1545,17 @@ "virtualCpAddress": { "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1119,14 +1583,19 @@ "items": { "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", "type": "object", - "required": ["netAttDefResourceInfoId", "netAttDefResource"], + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], "properties": { "netAttDefResourceInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1197,7 +1666,11 @@ "type": "array", "items": { "type": "object", - "required": ["id", "vnfVirtualLinkDescId", "networkResource"], + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -1212,7 +1685,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1262,14 +1737,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1320,7 +1800,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1339,14 +1822,19 @@ "items": { "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", "type": "object", - "required": ["netAttDefResourceInfoId", "netAttDefResource"], + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], "properties": { "netAttDefResourceInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1421,7 +1909,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "performanceMetric"], + "required": [ + "id", + "performanceMetric" + ], "properties": { "id": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -1452,7 +1943,11 @@ "items": { "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "vduId", "computeResource"], + "required": [ + "id", + "vduId", + "computeResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1467,7 +1962,9 @@ "type": "string" }, "computeResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1532,7 +2029,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "cpdId"], + "required": [ + "id", + "cpdId" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1552,30 +2052,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -1593,12 +2106,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1616,7 +2134,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1642,12 +2163,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1682,6 +2208,10 @@ "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -1689,6 +2219,10 @@ "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -1699,7 +2233,11 @@ "items": { "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires including\n a related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the\n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["id", "vnfVirtualLinkDescId", "networkResource"], + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1714,7 +2252,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1772,14 +2312,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1830,7 +2375,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1856,7 +2404,11 @@ "items": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence\n notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["id", "virtualStorageDescId", "storageResource"], + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1871,7 +2423,9 @@ "type": "string" }, "storageResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1970,7 +2524,10 @@ "mcioType": { "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", "type": "string", - "enum": ["Deployment", "StatefulSet"] + "enum": [ + "Deployment", + "StatefulSet" + ] }, "desiredInstances": { "description": "Number of desired MCIO instances.\n", @@ -1980,6 +2537,76 @@ "description": "Number of available MCIO instances.\n", "type": "integer" }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfPaasServiceInfo": { + "description": "Information on the PaaS Services assigned and used by the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides input information about a PaaS Service that is used by a VNF instance. The PaasServiceInfo is comprised of various sets of information. Some information comes from the VNFD, other information comes from the PaaS Service assets provided by the NFVO to the VNFM, and other information is provided at runtime information about the usage of the PaaS Service.\n", + "type": "object", + "required": [ + "id", + "paasServiceId", + "paasServiceType", + "paasServiceRequestId", + "paasServiceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceType": { + "description": "The type of PaaS Service. The value of this attribute is expected to be matched against values of the registered PaaS Services in the PSR.", + "type": "string" + }, + "paasServiceVersion": { + "description": "A version.\n", + "type": "string" + }, + "paasServiceRequestId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "paasServiceHandle": { + "description": "This type provides information enabling the access and use of the PaaS Service by the VNF instance. The type and format of the handle depends on the form that the PaaS Service is formed.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, "additionalInfo": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" @@ -2000,12 +2627,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2016,7 +2647,9 @@ "indicators": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2027,7 +2660,9 @@ "instantiate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2038,7 +2673,9 @@ "terminate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2049,7 +2686,9 @@ "scale": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2060,7 +2699,9 @@ "scaleToLevel": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2071,7 +2712,9 @@ "changeFlavour": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2082,7 +2725,9 @@ "heal": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2093,7 +2738,9 @@ "operate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2104,7 +2751,9 @@ "changeExtConn": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2115,7 +2764,9 @@ "createSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2126,7 +2777,9 @@ "revertToSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2137,7 +2790,9 @@ "changeCurrentVnfPkg": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 6abfe683..17993b9c 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -56,7 +56,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -87,7 +89,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -118,7 +122,9 @@ "additionalProperties": { "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-related parameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM, CISM, CIR or MCIOP repository.\n \n* NOTE 3:\t ETSI GS NFV-SOL 009 [i.18] specifies the means to configure into the VNFM applicable VIM connection information via the \"NFV-MANO Configuration and Information Management\" interface. \n* NOTE 4:\t Due to the possibility of configuring such information into the VNFM out-of-band, by means outside the scope of the present document, as well as in-band, by means specified in the present document, care should be taken to avoid unintended conflicts in the VNFM when managing such information.\n", "type": "object", - "required": ["vimType"], + "required": [ + "vimType" + ], "properties": { "vimId": { "description": "An identifier with the intention of being globally unique.\n", @@ -143,15 +149,299 @@ } } }, + "certificateInfo": { + "description": "This type provides input information related to certificate and certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateConfigurationInfo": { + "description": "This type provides input information related to certificate management.\n", + "type": "object", + "required": [ + "securityPolicy" + ], + "properties": { + "certificateBaseProfile": { + "description": "Information for certificate profile.", + "type": "array", + "items": { + "description": "NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\nThis type provides input information to override certificate base profile for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "description": "Issuer of certificates. See note.", + "type": "string" + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to the subject of the certificate.\nNOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of the certification target subject FQDN. Can be set empty when this certificate is used for encrypted communication using IP address. See note.\n", + "type": "string" + }, + "organization": { + "description": "Information of the certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of the certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of the certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of the certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of the certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "description": "Basic constraints of certificates. See note.", + "type": "string" + }, + "issuerAltName": { + "description": "Alternative name of issuer of certificates in this NS. See note.", + "type": "array", + "items": { + "type": "string" + } + }, + "subjectAltName": { + "description": "Alternative name of subject of certificates. Shall be present when this certificate is used for encrypted communication using IP address and subjectAltName attribute of CertificateBaseProfile in CertificateDesc of VNFD is empty (see ETSI GS NFV-IFA 011 [14], clause 7.1.19.4). See note.\n", + "type": "array", + "items": { + "type": "string" + } + }, + "nameConstraints": { + "description": "Name constraints of certificates. See note.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.", + "type": "array", + "items": { + "description": "This type provides input information related to security policy for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "Allowed max validity period for certificates.", + "type": "number" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "number" + } + } + } + }, + "delegationSupportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "cmfInfo": { + "description": "This type provides input information related to CMF for certificate management.\n", + "type": "object", + "required": [ + "id", + "endPoint", + "supportedProtocol" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "endPoint": { + "description": "End point of CMF instance.", + "type": "object", + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "link": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "supportedProtocol": { + "description": "Supported protocols by CMF instance.", + "type": "array", + "items": { + "description": "Supported protocol by CMF instance.", + "type": "string", + "enum": [ + "CMP", + "CMPv2", + "EST", + "SCEP" + ] + } + }, + "certificateChain": { + "description": "Certificate chain that this CMF provides.", + "type": "array", + "items": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "certificateContents": { + "description": "Information for contents of issued certificates. The information contained in this attribute may be updated over time during the VNF LCM, e.g., certificate(s) renewal.\n", + "type": "array", + "items": { + "description": "This type provides input information related to certificate content.\nNOTE: The CertificateDesc data type is defined in clause 7.1.19.2 of ETSI GS NFV IFA 011 [10].\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate.", + "type": "string", + "enum": [ + "VNFCI_CERT", + "VNFOAM_CERT" + ] + }, + "supportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "version": { + "description": "A version.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate.", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate's signature.", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate's public key.", + "type": "string" + }, + "publicKey": { + "description": "Public key of this certificate.", + "type": "string" + }, + "certificateExtensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, "instantiationState": { "description": "The instantiation state of the VNF. Permitted values: - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. - INSTANTIATED: The VNF instance is instantiated.\n", "type": "string", - "enum": ["NOT_INSTANTIATED", "INSTANTIATED"] + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] }, "instantiatedVnfInfo": { "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", "type": "object", - "required": ["flavourId", "vnfState", "extCpInfo"], + "required": [ + "flavourId", + "vnfState", + "extCpInfo" + ], "properties": { "flavourId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -160,7 +450,10 @@ "vnfState": { "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", "type": "string", - "enum": ["STARTED", "STOPPED"] + "enum": [ + "STARTED", + "STOPPED" + ] }, "scaleStatus": { "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", @@ -168,7 +461,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -191,7 +487,10 @@ "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", "type": "object", - "required": ["aspectId", "scaleLevel"], + "required": [ + "aspectId", + "scaleLevel" + ], "properties": { "aspectId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -208,6 +507,14 @@ } } }, + "selectedDeployableModule": { + "description": "References a currently selected deployable module, as defined in the VNFD, that has already completed the instantiation of its VNFCs.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, "extCpInfo": { "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", "type": "array", @@ -215,16 +522,27 @@ "items": { "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n “extLinkPorts” attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "cpdId", "cpConfigId", "cpProtocolInfo"], + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], "oneOf": [ { - "required": ["associatedVnfcCpId"] + "required": [ + "associatedVnfcCpId" + ] }, { - "required": ["associatedVipCpId"] + "required": [ + "associatedVipCpId" + ] }, { - "required": ["associatedVnfVirtualLinkId"] + "required": [ + "associatedVnfVirtualLinkId" + ] } ], "properties": { @@ -250,30 +568,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -291,12 +622,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -314,7 +650,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -340,12 +679,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -392,6 +736,10 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -403,7 +751,10 @@ "items": { "description": "This type provides information related to virtual IP (VIP) CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["cpInstanceId", "cpdId"], + "required": [ + "cpInstanceId", + "cpdId" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -427,30 +778,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -468,12 +832,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -491,7 +860,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -517,12 +889,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -563,7 +940,12 @@ "items": { "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", "type": "object", - "required": ["cpInstanceId", "cpdId", "resourceHandle", "vduIds"], + "required": [ + "cpInstanceId", + "cpdId", + "resourceHandle", + "vduIds" + ], "properties": { "cpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -574,7 +956,9 @@ "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -628,30 +1012,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -669,12 +1066,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -692,7 +1094,10 @@ "addressRange": { "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", "type": "object", - "required": ["minAddress", "maxAddress"], + "required": [ + "minAddress", + "maxAddress" + ], "properties": { "minAddress": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -718,12 +1123,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -754,7 +1164,9 @@ "items": { "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", "type": "object", - "required": ["portInfo"], + "required": [ + "portInfo" + ], "properties": { "portInfo": { "description": "Service port numbers exposed by the virtual CP instance.\n", @@ -763,7 +1175,11 @@ "items": { "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", "type": "object", - "required": ["name", "port", "portConfigurable"], + "required": [ + "name", + "port", + "portConfigurable" + ], "properties": { "name": { "description": "The name of the port exposed by the virtual CP instance.\n", @@ -772,7 +1188,11 @@ "protocol": { "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", "type": "string", - "enum": ["TCP", "UDP", "SCTP"] + "enum": [ + "TCP", + "UDP", + "SCTP" + ] }, "port": { "description": "The L4 port number exposed by the virtual CP instance.\n", @@ -805,14 +1225,20 @@ "items": { "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", - "required": ["id", "resourceHandle", "currentVnfExtCpData"], + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -862,14 +1288,19 @@ "items": { "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -934,7 +1365,9 @@ "items": { "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation or as part of the Grant response for any of these operations, a cpConfig\n map entry identified by a particular map key value is moved into another \"ExtVirtualLinkData\" or\n \"VnfExtCpData\" structure, this particular cpConfig map entry may be used by an external CP instance\n different than the one that has used it before the operation, or by no external CP instance at all.\n Renaming a CPD identifier during the \"changeCurrentVnfPkg\" operation does not count as moving the related\n \"cpConfig\" map entries to a new \"extCpData\" structure.\n", "type": "object", - "required": ["cpdId"], + "required": [ + "cpdId" + ], "properties": { "cpdId": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -947,13 +1380,19 @@ "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes “netAttDefResourceId” and “cpProtocolData” for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) The \"netAttDefResourceId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an\n existing external CP instance addressed by cpInstanceId.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"netAttDefResourceNamespace\" attribute in the\n \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { - "required": ["linkPortId"] + "required": [ + "linkPortId" + ] }, { - "required": ["cpProtocolData"] + "required": [ + "cpProtocolData" + ] }, { - "required": ["netAttDefResourceId"] + "required": [ + "netAttDefResourceId" + ] } ], "type": "object", @@ -984,7 +1423,9 @@ "items": { "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", @@ -999,21 +1440,31 @@ "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["fixedAddresses"] + "required": [ + "fixedAddresses" + ] }, { - "required": ["numDynamicAddresses"] + "required": [ + "numDynamicAddresses" + ] }, { - "required": ["ipAddressRange"] + "required": [ + "ipAddressRange" + ] } ], "properties": { @@ -1025,7 +1476,10 @@ "segmentationType": { "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network it’s connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", "type": "string", - "enum": ["VLAN", "INHERIT"] + "enum": [ + "VLAN", + "INHERIT" + ] }, "segmentationId": { "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", @@ -1036,12 +1490,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "fixedAddresses": { "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1088,12 +1547,17 @@ "virtualCpAddress": { "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1131,7 +1595,9 @@ "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1202,7 +1668,11 @@ "type": "array", "items": { "type": "object", - "required": ["id", "vnfVirtualLinkDescId", "networkResource"], + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", @@ -1217,7 +1687,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1267,14 +1739,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1325,7 +1802,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1354,7 +1834,9 @@ "type": "string" }, "netAttDefResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1429,7 +1911,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "performanceMetric"], + "required": [ + "id", + "performanceMetric" + ], "properties": { "id": { "description": "An identifier that is unique within a VNF descriptor.\n", @@ -1460,7 +1945,11 @@ "items": { "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure of\n information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n a) For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n b) For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\nNOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on \n TOSCA specifications.\nNOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an \n internal VL that exposes an external CP. A VNFC CP is \"exposed as\" an external \n CP if it is connected directly to an external VL.\nNOTE 3:\tThe information can be omitted because it is already available as part of the \n external CP information.\nNOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVnfc\" structure in the VNF LCM operation occurrence notifications\n or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\nNOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build a link\n redundant mated pair in SR-IOV cases.\nNOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", - "required": ["id", "vduId", "computeResource"], + "required": [ + "id", + "vduId", + "computeResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1475,7 +1964,9 @@ "type": "string" }, "computeResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1540,7 +2031,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "cpdId"], + "required": [ + "id", + "cpdId" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1560,30 +2054,43 @@ "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", "type": "object", - "required": ["layerProtocol"], + "required": [ + "layerProtocol" + ], "properties": { "layerProtocol": { "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", "type": "string", - "enum": ["IP_OVER_ETHERNET", "IP_FOR_VIRTUAL_CP"] + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] }, "ipOverEthernet": { "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVI’s transport technology.\n", "type": "object", "anyOf": [ { - "required": ["macAddress"] + "required": [ + "macAddress" + ] }, { - "required": ["ipAddresses"] + "required": [ + "ipAddresses" + ] } ], "oneOf": [ { - "required": ["addresses"] + "required": [ + "addresses" + ] }, { - "required": ["addressRange"] + "required": [ + "addressRange" + ] } ], "properties": { @@ -1601,12 +2108,17 @@ "type": "array", "items": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "addresses": { "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", @@ -1653,12 +2165,17 @@ "virtualCpAddress": { "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", "type": "object", - "required": ["type"], + "required": [ + "type" + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", "type": "string", - "enum": ["IPV4", "IPV6"] + "enum": [ + "IPV4", + "IPV6" + ] }, "loadBalancerIp": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", @@ -1693,6 +2210,10 @@ "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -1700,6 +2221,10 @@ "metadata": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -1710,7 +2235,11 @@ "items": { "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires including\n a related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the\n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["id", "vnfVirtualLinkDescId", "networkResource"], + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1725,7 +2254,9 @@ "type": "string" }, "networkResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1783,14 +2314,19 @@ "items": { "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", - "required": ["id", "resourceHandle"], + "required": [ + "id", + "resourceHandle" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, "resourceHandle": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1841,7 +2377,10 @@ "cpInstanceType": { "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", "type": "string", - "enum": ["VNFC_CP", "EXT_CP"] + "enum": [ + "VNFC_CP", + "EXT_CP" + ] }, "vipCpInstanceId": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1867,7 +2406,11 @@ "items": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNote: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\"\n structure by an LCM operation occurrence, this does not represent a change that requires\n including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence\n notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", - "required": ["id", "virtualStorageDescId", "storageResource"], + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], "properties": { "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -1882,7 +2425,9 @@ "type": "string" }, "storageResource": { - "required": ["resourceId"], + "required": [ + "resourceId" + ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. This value set is different from \n the value set of the \"type\" attribute in the ResourceDefinition (refer to clause 9.5.3.2). When the container \n infrastructure service management is a Kubernetes® instance the vimLevelResourceType is the type of \n resource, as would correspond to the 'kind' field if the resource is declared in its own Kubernetes® manifest, \n e.g.: Pod, PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 2: When the container infrastructure service management is a Kubernetes® instance the resourceId shall be \n populated in the following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes® manifest.\n", "properties": { @@ -1981,7 +2526,10 @@ "mcioType": { "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", "type": "string", - "enum": ["Deployment", "StatefulSet"] + "enum": [ + "Deployment", + "StatefulSet" + ] }, "desiredInstances": { "description": "Number of desired MCIO instances.\n", @@ -1991,6 +2539,76 @@ "description": "Number of available MCIO instances.\n", "type": "integer" }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfPaasServiceInfo": { + "description": "Information on the PaaS Services assigned and used by the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides input information about a PaaS Service that is used by a VNF instance. The PaasServiceInfo is comprised of various sets of information. Some information comes from the VNFD, other information comes from the PaaS Service assets provided by the NFVO to the VNFM, and other information is provided at runtime information about the usage of the PaaS Service.\n", + "type": "object", + "required": [ + "id", + "paasServiceId", + "paasServiceType", + "paasServiceRequestId", + "paasServiceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceType": { + "description": "The type of PaaS Service. The value of this attribute is expected to be matched against values of the registered PaaS Services in the PSR.", + "type": "string" + }, + "paasServiceVersion": { + "description": "A version.\n", + "type": "string" + }, + "paasServiceRequestId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "paasServiceHandle": { + "description": "This type provides information enabling the access and use of the PaaS Service by the VNF instance. The type and format of the handle depends on the form that the PaaS Service is formed.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, "additionalInfo": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" @@ -2011,12 +2629,16 @@ "_links": { "description": "Links to resources related to this resource.\n", "type": "object", - "required": ["self"], + "required": [ + "self" + ], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2027,7 +2649,9 @@ "indicators": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2038,7 +2662,9 @@ "instantiate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2049,7 +2675,9 @@ "terminate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2060,7 +2688,9 @@ "scale": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2071,7 +2701,9 @@ "scaleToLevel": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2082,7 +2714,9 @@ "changeFlavour": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2093,7 +2727,9 @@ "heal": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2104,7 +2740,9 @@ "operate": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2115,7 +2753,9 @@ "changeExtConn": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2126,7 +2766,9 @@ "createSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2137,7 +2779,9 @@ "revertToSnapshot": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2148,7 +2792,9 @@ "changeCurrentVnfPkg": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": ["href"], + "required": [ + "href" + ], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -2160,4 +2806,4 @@ } } } -} +} \ No newline at end of file -- GitLab From 2b63b3fab2fc14eb8d77860b06d5ad66d59b505a Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Wed, 21 Aug 2024 10:58:29 +0500 Subject: [PATCH 18/30] Update VnfLcmOperationOccurrenceNotification datamodel as per clause 5.5.2.17 --- ...perationOccurrenceNotification.schema.json | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index 81e02413..4d4b6cf7 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -596,6 +596,42 @@ } } }, + "affectedCertificates": { + "description": "Information about certificate content that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable\n", + "type": "array", + "items": { + "description": "This type provides input information about added, deleted, and modified certificate contents.\n", + "type": "object", + "required": ["certificateInfoId", "changeType"], + "properties": { + "certificateInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateBaseProfileId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "securityPolicyId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cmfInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change.", + "type": "string", + "enum": ["ADD", "REMOVE", "MODIFY"] + } + } + } + }, "changedExtConnectivity": { "description": "Information about changed external connectivity, if this notification represents the result of a lifecycle operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the external connectivity of the VNF instance. Shall be absent otherwise. Only information about external VL instances that have been added or modified shall be provided.\n", "type": "array", -- GitLab From f41459209b26d43f79bbf80538636a5da32a3b13 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Thu, 22 Aug 2024 12:26:11 +0500 Subject: [PATCH 19/30] Add new test cases for resource: Select VNF deployable modules task as per clause 5.4.26 --- .../VNFSelectDeployableModules.robot | 98 +++++++++++++++++++ .../VnfLcmMntOperationKeywords.robot | 68 +++++++++++++ .../SelectVnfDeployableModulesRequest.json | 10 ++ 3 files changed, 176 insertions(+) create mode 100644 SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot create mode 100644 SOL003/VNFLifecycleManagement-API/jsons/SelectVnfDeployableModulesRequest.json diff --git a/SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot b/SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot new file mode 100644 index 00000000..37c1dce8 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot @@ -0,0 +1,98 @@ +*** Settings *** +Resource environment/variables.txt +Resource VnfLcmMntOperationKeywords.robot +Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Library OperatingSystem +Library BuiltIn +Library Collections +Library JSONLibrary +Library Process + +*** Test Cases *** +POST Select VNF Deployable Module + [Documentation] Test ID: 7.3.1.43.1 + ... Test title: POST Select VNF Deployable Module + ... Test objective: The objective is to select VNF Deployable Module + ... Pre-conditions: The VNF instance resource is in INSTANTIATED state + ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Select VNF Deployable Modules + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Select VNF Deployable Module Not Found + [Documentation] Test ID: 7.3.1.43.2 + ... Test title: POST Select VNF Deployable Module Not Found + ... Test objective: The objective is to test that the POST Select VNF Deployable Module fails when the resource is not present. + ... Pre-conditions: none + ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Select VNF Deployable Modules Not Existing + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +POST Select VNF Deployable Module with conflict (Not Instantiated) + [Documentation] Test ID: 7.3.1.43.3 + ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) + ... Test objective: The objective is to test that the operation fails when there is a conflict with the resource state. + ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state + ... Reference: Clause 5.4.26.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Select VNF Deployable Modules with conflict + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Select VNF Deployable Module - Method not implemented + [Documentation] Test ID: 7.3.1.43.4 + ... Test title: GET Select VNF Deployable Module - Method not implemented + ... Test objective: The objective is to verify that the method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.26.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET Select VNF Deployable Modules + Check HTTP Response Status Code Is 405 + +PUT Select VNF Deployable Module - Method not implemented + [Documentation] Test ID: 7.3.1.43.5 + ... Test title: PUT Select VNF Deployable Module - Method not implemented + ... Test objective: The objective is to test that PUT method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.26.3.3 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PUT Select VNF Deployable Modules + Check HTTP Response Status Code Is 405 + +PATCH Select VNF Deployable Module - Method Not implemented + [Documentation] Test ID: 7.3.1.43.6 + ... Test title: PATCH Select VNF Deployable Module - Method Not implemented + ... Test objective: The objective is to test that PATCH method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.26.3.4 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + PATCH Select VNF Deployable Modules + Check HTTP Response Status Code Is 405 + +DELETE Select VNF Deployable Module - Method Not implemented + [Documentation] Test ID: 7.3.1.43.7 + ... Test title: DELETE Select VNF Deployable Module - Method Not implemented + ... Test objective: The objective is to test that DELETE method is not implemented + ... Pre-conditions: none + ... Reference: Clause 5.4.26.3.5 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + DELETE Select VNF Deployable Modules + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 180d7fa3..24871fc3 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -2133,6 +2133,74 @@ DELETE VNF State Snapshot ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Select VNF Deployable Modules + log Trying to select deployable modules of VNF instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/SelectVnfDeployableModulesRequest.json + ${body}= Format String ${template} + Post ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Select VNF Deployable Modules Not Existing + log Trying to select deployable modules of VNF instance + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/SelectVnfDeployableModulesRequest.json + ${body}= Format String ${template} + Post ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/select_depl_mods ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Select VNF Deployable Modules with conflict + log Trying to select deployable modules of VNF instance. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/SelectVnfDeployableModulesRequest.json + ${body}= Format String ${template} + Post ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/select_depl_mods ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + +GET Select VNF Deployable Modules + log Trying to perform a GET. This method should not be implemented + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT Select VNF Deployable Modules + log Trying to perform a PUT. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH Select VNF Deployable Modules + log Trying to perform a PATCH. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE Select VNF Deployable Modules + log Trying to perform a DELETE. This method should not be implemented + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/vnflcm/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/select_depl_mods + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + + Check HTTP Content-Type Header Is Set Log Check Content-Type HTTP Header Should Contain ${response['headers']} Content-Type diff --git a/SOL003/VNFLifecycleManagement-API/jsons/SelectVnfDeployableModulesRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/SelectVnfDeployableModulesRequest.json new file mode 100644 index 00000000..fa5070c3 --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/jsons/SelectVnfDeployableModulesRequest.json @@ -0,0 +1,10 @@ +{{ + "selectedDeployableModule": ["string"], + "targetScaleLevelInfo": [ + { + "aspectId": "{string}", + "scaleLevel": 1 + } + ], + "additionalParams": {} +}} -- GitLab From 58317720c7ecf12b8d1ca3284a5782085949fa26 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Thu, 22 Aug 2024 12:49:56 +0500 Subject: [PATCH 20/30] Fix datamodel: ScaleInfo as per clause 4.4.1.15 --- .../jsons/instantiateVnfRequestTargetScaleLevelInfo.json | 2 +- .../jsons/scaleVnfToLevelRequestScaleInfo.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequestTargetScaleLevelInfo.json b/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequestTargetScaleLevelInfo.json index e72a745d..7a117aba 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequestTargetScaleLevelInfo.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/instantiateVnfRequestTargetScaleLevelInfo.json @@ -4,7 +4,7 @@ { "aspectId": "{aspectId}", "vnfdId": "string", - "scaleToLevel": "1" + "scaleLevel": 1 } ], "extVirtualLinks": [ diff --git a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequestScaleInfo.json b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequestScaleInfo.json index 11c31f50..9ad9adb8 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequestScaleInfo.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/scaleVnfToLevelRequestScaleInfo.json @@ -3,7 +3,7 @@ { "aspectId": "{aspectId}", "vnfdId": "string", - "scaleToLevel": "1" + "scaleLevel": 1 } ] }} \ No newline at end of file -- GitLab From 009349c9c92f66fa69a304c1e7579bb3ddf41ced Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Tue, 27 Aug 2024 16:29:12 +0500 Subject: [PATCH 21/30] update datamodel: vnfLcmOpOcc as per clause 5.5.2.13 --- .../VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json | 3 ++- .../schemas/VnfLcmOpOccs.schema.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json index 60ac77db..02e688ac 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json @@ -70,7 +70,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json index 17727c47..7b517448 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json @@ -72,7 +72,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { -- GitLab From c6f36d7d6feaa2312e49882e3074510a03ffe366 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 28 Aug 2024 09:55:34 +0500 Subject: [PATCH 22/30] fix the issue by adding missing _links attribute in VnfLcmOpOcc schema as per Table 5.5.2.13-1 --- .../VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json | 3 ++- .../schemas/VnfLcmOpOccs.schema.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json index 02e688ac..70f4b769 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json @@ -17,7 +17,8 @@ "vnfInstanceId", "operation", "isAutomaticInvocation", - "isCancelPending" + "isCancelPending", + "_links" ], "properties": { "id": { diff --git a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json index 7b517448..29ccb930 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOccs.schema.json @@ -19,7 +19,8 @@ "vnfInstanceId", "operation", "isAutomaticInvocation", - "isCancelPending" + "isCancelPending", + "_links" ], "properties": { "id": { -- GitLab From 3eb8ac07965f5ae88903e7b95949e87d8ec7d14b Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Thu, 29 Aug 2024 10:43:52 +0500 Subject: [PATCH 23/30] update datamodel: vnfinstance as per clause 5.5.2.2 --- .../VNFLifecycleManagement-API/schemas/vnfInstance.schema.json | 3 ++- .../schemas/vnfInstances.schema.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index eb40fb23..1e547f42 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -2526,7 +2526,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "StatefulSet", + "DaemonSet" ] }, "desiredInstances": { diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 17993b9c..4a77983c 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -2528,7 +2528,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "StatefulSet", + "DaemonSet" ] }, "desiredInstances": { -- GitLab From c89476e3106f8dbf03b2c922d09ae876b19a2313 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 13 Sep 2024 16:42:56 +0500 Subject: [PATCH 24/30] implement oauth scope for SOL003 VNFLifecycleManagement API --- .../CancelOperationTask.robot | 27 +- .../ChangeCurrentVNFPackageTask.robot | 26 + .../ChangeExternalVNFConnectivityTask.robot | 28 +- .../ChangeVNFFlavourTask.robot | 31 +- .../CreateVNFSnapshotTask.robot | 26 + .../FailOperationTask.robot | 27 + .../HealVNFTask.robot | 29 +- .../IndividualSubscription.robot | 26 + .../IndividualVNFInstance.robot | 30 +- .../IndividualVNFSnapshot.robot | 29 +- .../IndividualVnfLcmOperationOccurence.robot | 27 + .../InstantiateVNFTask.robot | 29 +- .../OperateVNFTask.robot | 26 + .../RetryOperationTask.robot | 27 + .../RevertToVNFSnapshotTask.robot | 26 + .../RollbackOperationTask.robot | 31 +- .../ScaleVNFTask.robot | 30 +- .../ScaleVNFToLevelTask.robot | 29 +- .../Subscriptions.robot | 28 +- .../TerminateVNFTask.robot | 27 + .../VNFInstances.robot | 28 +- .../VNFSnapshots.robot | 29 +- .../VNFStateSnapshot.robot | 28 +- .../VnfLcmMntOperationKeywords.robot | 700 ++++++++++++++++-- .../VnfLcmOperationOccurences.robot | 30 +- .../environment/variables.txt | 38 + requirements.txt | 2 +- 27 files changed, 1338 insertions(+), 76 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot index eccb1e68..17df4fcd 100644 --- a/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -92,4 +92,29 @@ DELETE Cancel operation task - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Cancel operation task - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +POST Cancel operation task with permitted authorization scope + [Documentation] Test ID: 7.3.1.16.8 + ... Test title: POST Cancel operation task with permitted authorization scope + ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. + ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state with permitted authorization scope. + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF instance status equal to FAILED_TEMP + POST Cancel operation task with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check operation resource state is FAILED_TEMP + +POST Cancel operation task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.16.9 + ... Test title: POST Cancel operation task with not permitted authorization scope + ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. + ... Pre-conditions: The "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state with not permitted authorization scope. + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF instance status equal to FAILED_TEMP + POST Cancel operation task with not permitted authorization scope + Check HTTP Response Status Code Is 403 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index e6eef538..8860beef 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -81,6 +81,32 @@ DELETE Change current VNF Package Task - Method not implemented ... Post-Conditions: none DELETE Change Current VNF Package Task Check HTTP Response Status Code Is 405 + +POST Change current VNF Package Task with permitted authorization scope + [Documentation] Test ID: 7.3.1.37.7 + ... Test title: POST Change current VNF Package Task with permitted authorization scope + ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change Current VNF Package Task with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Location Header Contains URI of Created Resource + +POST Change current VNF Package Task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.37.8 + ... Test title: POST Change current VNF Package Task + ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with not permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change Current VNF Package Task with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence diff --git a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 434d1a5d..f9fd3ebb 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -67,4 +67,30 @@ DELETE Change external VNF connectivity - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Change External VNF Connectivity - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +POST Change external VNF connectivity with permitted authorization scope + [Documentation] Test ID: 7.3.1.10.6 + ... Test title: POST Change external VNF connectivity with permitted authorization scope + ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change External VNF Connectivity with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Change external VNF connectivity with not permitted authorization scope + [Documentation] Test ID: 7.3.1.10.7 + ... Test title: POST Change external VNF connectivity with not permitted authorization scope + ... Test objective: The objective is to test that POST method trigger a change in VNF external connectivity with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change External VNF Connectivity with not permitted authorization scope + Check HTTP Response Status Code Is 403 \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 2cf454be..11b94187 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -16,7 +16,7 @@ POST Change deployment flavour of a vnfInstance ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: in response header Location shall not be null - POST Change VNF deployment flavour + POST Change VNF deployment flavour Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Individual VNF LCM operation occurrence operationState is STARTING @@ -93,4 +93,31 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Change VNF deployment flavour - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +POST Change deployment flavour of a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.6.8 + ... Test title: POST Change deployment flavour of a vnfInstance with permitted authorization scope + ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour with permitted authorization scope + ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change VNF deployment flavour with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Change deployment flavour of a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.6.9 + ... Test title: POST Change deployment flavour of a vnfInstance with not permitted authorization scope + ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour with not permitted authorization scope + ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Change VNF deployment flavour with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index ecfe31df..46afa0e0 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -108,6 +108,32 @@ DELETE Create VNF Snapshot Task - Method not implemented DELETE Create VNF Snapshot Task Check HTTP Response Status Code Is 405 +POST Create VNF Snapshot Task with permitted authorization scope + [Documentation] Test ID: 7.3.1.38.9 + ... Test title: POST Create VNF Snapshot Task with permitted authorization scope + ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with permitted authorization scope with permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Create VNF Snapshot Task with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Location Header Contains URI of Created Resource + +POST Create VNF Snapshot Task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.38.10 + ... Test title: POST Create VNF Snapshot Task with not permitted authorization scope + ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with not permitted authorization scope with not permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Create VNF Snapshot Task with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index 604c15bd..cd4fd6b1 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -94,3 +94,30 @@ DELETE Fail operation task - Method not implemented ... Post-Conditions: Delete Fail operation Check HTTP Response Status Code Is 405 + +POST Fail operation task with permitted authorization scope + [Documentation] Test ID: 7.3.1.15.8 + ... Test title: POST Fail operation task with permitted authorization scope + ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation with permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF resource state is FINALLY_FAILED + Post Fail operation with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check operation resource state is FINALLY_FAILED + +POST Fail operation task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.15.9 + ... Test title: POST Fail operation task with permitted authorization scope + ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation with permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF resource state is FINALLY_FAILED + Post Fail operation with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index 8cdfb001..46e771e0 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -93,4 +93,31 @@ DELETE Heal VNFInstance - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE Heal VNF - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +POST Heal a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.8.8 + ... Test title: POST Heal a vnfInstance with permitted authorization scope + ... Test objective: The objective is to test that POST method heal a VNF instance with permitted authorization scope + ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Heal VNF with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Heal a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.8.9 + ... Test title: POST Heal a vnfInstance with permitted authorization scope + ... Test objective: The objective is to test that POST method heal a VNF instance with not permitted authorization scope + ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Heal VNF with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index 5585c8d1..5275e77d 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -78,4 +78,30 @@ GET Individual Subscription - Not Found ... Post-Conditions: none Get Individual Subscription Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +GET Individual Subscription with permitted authorization scope + [Documentation] Test ID: 7.3.1.18.7 + ... Test title: GET Individual Subscription with permitted authorization scope + ... Test objective: The objective is to test the Get individual subscription with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual subscription with permitted authorization scope + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is Subscription + +GET Individual Subscription with not permitted authorization scope + [Documentation] Test ID: 7.3.1.18.8 + ... Test title: GET Individual Subscription with permitted authorization scope + ... Test objective: The objective is to test the Get individual subscription with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual subscription with not permitted authorization scope + Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 1be74b1d..0d2ee939 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -37,7 +37,7 @@ Get Information about an individual VNF Instance Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstance Check HTTP Response Body vnfInstance content against VNF Descriptor - + PUT Individual VNFInstance - Method not implemented [Documentation] Test ID: 7.3.1.2.3 ... Test title: PUT Individual VNFInstance - Method not implemented @@ -127,6 +127,34 @@ Get Information about an individual VNF Instance - Not Found GET individual vnfInstance Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails + +Get Information about an individual VNF Instance with permitted authorization scope + [Documentation] Test ID: 7.3.1.2.2 + ... Test title: Get Information about an individual VNF Instance with permitted authorization scope + ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual vnfInstance with permitted authorization scope + Check HTTP Response Header Contains ETag and Last-Modified + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is vnfInstance + Check HTTP Response Body vnfInstance content against VNF Descriptor + +Get Information about an individual VNF Instance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.2.2 + ... Test title: Get Information about an individual VNF Instance with not permitted authorization scope + ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual vnfInstance with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index f4647a03..ed828b56 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -118,4 +118,31 @@ DELETE Individual VNF Snapshot - Conflict DELETE individual VNF Snapshot - CONFLICT Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails - Check Postcondition VNF Snapshot Resource Existence \ No newline at end of file + Check Postcondition VNF Snapshot Resource Existence + +GET Information about an individual VNF Snapshot - SUCCESSFUL with permitted authorization scope + [Documentation] Test ID: 7.3.1.41.10 + ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL with permitted authorization scope + ... Test objective: The objective is to GET information about an individual VNF Snapshot with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Snapshot with permitted authorization scope + Check HTTP Response Header Contains ETag and Last-Modified + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfSnapshotInfo + +GET Information about an individual VNF Snapshot with not permitted authorization scope + [Documentation] Test ID: 7.3.1.41.11 + ... Test title: GET Information about an individual VNF Snapshot with not permitted authorization scope + ... Test objective: The objective is to GET information about an individual VNF Snapshot with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Snapshot with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 8288f8d2..04e0d1a8 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -79,4 +79,31 @@ Get Individual VNF LCM Operation occurrences - Not Found ... Post-Conditions: none Get Individual VNF LCM Operation occurrences Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +Get Individual VNF LCM Operation occurrences with permitted authorization scope + [Documentation] Test ID: 7.3.1.12.7 + ... Test title: Get Individual VNF LCM Operation occurrences with permitted authorization scope + ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual VNF LCM Operation occurrences with permitted authorization scope + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is VnfLcmOpOcc + Check HTTP Response Body of Individual VNF LCM Operation occurrences content against VNF Descriptor + +Get Individual VNF LCM Operation occurrences with not permitted authorization scope + [Documentation] Test ID: 7.3.1.12.8 + ... Test title: Get Individual VNF LCM Operation occurrences with not permitted authorization scope + ... Test objective: The objective is to test that this method retrieve information about a VNF lifecycle management operation occurrence with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual VNF LCM Operation occurrences with not permitted authorization scope + Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot index daa2dcae..e6d9a28a 100644 --- a/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -81,4 +81,31 @@ DELETE Instantiate VNFInstance - Method not implemented ... Applicability: none ... Post-Conditions: none DELETE instantiate individual vnfInstance - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +Instantiate a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.3.7 + ... Test title: Post Instantiate Individual VNFInstance with permitted authorization scope + ... Test objective: The objective is to instantiate a VNF instance with permitted authorization scope + ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST instantiate individual vnfInstance with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +Instantiate a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.3.8 + ... Test title: Post Instantiate Individual VNFInstance with not permitted authorization scope + ... Test objective: The objective is to instantiate a VNF instance with not permitted authorization scope + ... Pre-conditions: VNF instance resource is in NOT INSTANTIATED state + ... Reference: Clause 5.4.4.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST instantiate individual vnfInstance with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot index 7f2f923e..2daa755b 100644 --- a/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -95,6 +95,32 @@ DELETE Operate VNFInstance - Method not implemented ... Post-Conditions: none DELETE Operate VNF Check HTTP Response Status Code Is 405 + +POST Operate a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.9.8 + ... Test title: POST Operate a vnfInstance with permitted authorization scope + ... Test objective: The objective is to test that POST method operate a VNF instance with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Operate VNF with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check Operation Occurrence Id existence + +POST Operate a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.9.9 + ... Test title: POST Operate a vnfInstance with not permitted authorization scope + ... Test objective: The objective is to test that POST method operate a VNF instance with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Operate VNF with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot index 9f597eca..f84c03dc 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -98,6 +98,33 @@ DELETE Retry operation task - Method not implemented Delete Retry operation Check HTTP Response Status Code Is 405 +Post Retry operation task with permitted authorization scope + [Documentation] Test ID: 7.3.1.13.8 + ... Test title: Post Retry operation task with permitted authorization scope + ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state with permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Retry operation with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +Post Retry operation task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.13.9 + ... Test title: Post Retry operation task with not permitted authorization scope + ... Test objective: The objective is to test that POST method The POST method initiates retrying a VNF lifecycle operation if the operation is in FAILED_TEMP state with not permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.14.4.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Retry operation with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index 06fbc49b..0fd1584a 100644 --- a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -95,6 +95,32 @@ DELETE Revert to VNF Snapshot Task - Method not implemented DELETE Revert to VNF Snapshot Task Check HTTP Response Status Code Is 405 +POST Revert to VNF Snapshot Task with permitted authorization scope + [Documentation] Test ID: 7.3.1.39.8 + ... Test title: POST Revert to VNF Snapshot Task with permitted authorization scope + ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with permitted authorization scope with permitted authorization scopes. + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Revert to VNF Snapshot Task with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Location Header Contains URI of Created Resource + +POST Revert to VNF Snapshot Task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.39.9 + ... Test title: POST Revert to VNF Snapshot Task with not permitted authorization scope + ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with not permitted authorization scope with not permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + POST Revert to VNF Snapshot Task with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot index fee1ca8c..eeb3a29a 100644 --- a/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -9,7 +9,7 @@ Documentation This task resource represents the "Rollback operation" operatio Suite Setup Check resource existence *** Test Cases *** -Post Rollback operation task +Post Rollback operation task [Documentation] Test ID: 7.3.1.14.1 ... Test title: Post Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation @@ -22,7 +22,7 @@ Post Rollback operation task Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Individual VNF LCM operation occurrence operationState is STARTING - + POST Rollback operation task Conflict (Not-FAILED_TEMP) [Documentation] Test ID: 7.3.1.14.2 ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) @@ -97,6 +97,33 @@ DELETE Rollback operation task - Method not implemented Delete Rollback operation Check HTTP Response Status Code Is 405 +Post Rollback operation task with permitted authorization scope + [Documentation] Test ID: 7.3.1.14.8 + ... Test title: Post Rollback operation task with permitted authorization scope + ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation with permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Rollback operation with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +Post Rollback operation task with not permitted authorization scope + [Documentation] Test ID: 7.3.1.14.9 + ... Test title: Post Rollback operation task with not permitted authorization scope + ... Test objective: The objective is to test that POST method initiates rollback on a VNF lifecycle operation with not permitted authorization scope + ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Post Rollback operation with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot index d9b537c3..cfb8a1de 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -17,7 +17,7 @@ POST Scale a vnfInstance ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance + POST Scale vnfInstance Check HTTP Response Status Code Is 202 Check HTTP Response Header Contains Location Check Individual VNF LCM operation occurrence operationState is STARTING @@ -96,6 +96,34 @@ DELETE Scale VNFInstance - Method not implemented DELETE Scale vnfInstance Check HTTP Response Status Code Is 405 +POST Scale a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.4.8 + ... Test title: POST Scale a vnfInstance with permitted authorization scope + ... Test objective: The objective is to scale a VNF instance with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Scale a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.4.9 + ... Test title: POST Scale a vnfInstance with not permitted authorization scope + ... Test objective: The objective is to scale a VNF instance with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance with not permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 3dcc0dc4..efced3b5 100644 --- a/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -106,4 +106,31 @@ POST Scale a vnfInstance to level - with scaleInfo attribute ... Post-Conditions: none POST Scale vnfInstance to level with scaleInfo attribute Check HTTP Response Status Code Is 202 - Check Operation Occurrence Id existence \ No newline at end of file + Check Operation Occurrence Id existence + +POST Scale a vnfInstance to level - with InstantiationLevelId attribute with permitted authorization scope + [Documentation] Test ID: 7.3.1.5.9 + ... Test title: POST Scale a vnfInstance to level with permitted authorization scope + ... Test objective: The objective is to scale a VNF instance to a target level with permitted authorization scope . + ... Pre-conditions: none + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance to level with InstantiationLevelId attribute with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Scale a vnfInstance to level - with InstantiationLevelId attribute with not permitted authorization scope + [Documentation] Test ID: 7.3.1.5.10 + ... Test title: POST Scale a vnfInstance to level with not permitted authorization scope + ... Test objective: The objective is to scale a VNF instance to a target level with not permitted authorization scope . + ... Pre-conditions: none + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Scale vnfInstance to level with InstantiationLevelId attribute with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot index 40e9624a..c8674a4f 100644 --- a/SOL003/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL003/VNFLifecycleManagement-API/Subscriptions.robot @@ -170,7 +170,7 @@ DELETE subscriptions - Method not implemented Check HTTP Response Status Code Is 405 GET Subscriptions as a Paged Response - [Documentation] Test ID: 7.3.1.17.14 + [Documentation] Test ID: 7.3.1.17.14 ... Test title: GET Subscriptions as a Paged Response ... Test objective: The objective is Get the list of active subscriptions as a Paged Response. ... Pre-conditions: none @@ -220,6 +220,32 @@ GET Subscriptions as a Paged Response with nextpage_opauque_marker parameter Get subscriptions with nextpage_opaque_marker parameter Check HTTP Response Status Code Is 200 +POST Create a new subscription with permitted authorization scope + [Documentation] Test ID: 7.3.1.17.18 + ... Test title: POST Create a new subscription with permitted authorization scope + ... Test objective: The POST method creates a new subscription with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + Post Create subscription with permitted authorization scope + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is Subscription + +POST Create a new subscription with not permitted authorization scope + [Documentation] Test ID: 7.3.1.17.19 + ... Test title: POST Create a new subscription with not permitted authorization scope + ... Test objective: The POST method creates a new subscription with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: in response header Location shall not be null + Post Create subscription with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Void Log do nothing diff --git a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot index 23fad768..5e765aa3 100644 --- a/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -83,6 +83,33 @@ DELETE Terminate VNFInstance - Method not implemented DELETE Terminate VNF Check HTTP Response Status Code Is 405 +POST Terminate a vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.7.7 + ... Test title: POST Terminate a vnfInstance with permitted authorization scope + ... Test objective: The objective is to test that POST method terminate a VNF instance with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Terminate VNF with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Individual VNF LCM operation occurrence operationState is STARTING + +POST Terminate a vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.7.8 + ... Test title: POST Terminate a vnfInstance with not permitted authorization scope + ... Test objective: The objective is to test that POST method terminate a VNF instance with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + POST Terminate VNF with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot index 47bb2e9a..dbe01ed9 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFInstances.robot @@ -224,4 +224,30 @@ GET information about multiple VNF instances using Filter ... Post-Conditions: none GET multiple vnfInstances using filter Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is vnfInstances \ No newline at end of file + Check HTTP Response Body Json Schema Is vnfInstances + +POST Create a new vnfInstance with permitted authorization scope + [Documentation] Test ID: 7.3.1.1.17 + ... Test title: POST Create a new vnfInstance with permitted authorization scope + ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF instance created + POST Create a new vnfInstance with permitted authorization scope + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is vnfInstance + +POST Create a new vnfInstance with not permitted authorization scope + [Documentation] Test ID: 7.3.1.1.18 + ... Test title: POST Create a new vnfInstance with not permitted authorization scope + ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF instance created + POST Create a new vnfInstance with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot index a34e4fc8..6317e454 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -193,4 +193,31 @@ GET information about multiple VNF Snapshots using Filter ... Post-Conditions: none GET multiple VNF Snapshots using filter Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is VnfSnapshotsInfo \ No newline at end of file + Check HTTP Response Body Json Schema Is VnfSnapshotsInfo + +POST Create a new VNF Snapshot with permitted authorization scope + [Documentation] Test ID: 7.3.1.40.16 + ... Test title: POST Create a new VNF Snapshot with permitted authorization scope + ... Test objective: The objective is to create a new VNF snapshot with permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF snapshot is created + POST Create a new VNF Snapshot with permitted authorization scope + Check HTTP Response Status Code Is 201 + Check HTTP Response Body Json Schema Is VnfSnapshotInfo + Check HTTP Location Header Contains URI of Created Resource + +POST Create a new VNF Snapshot with not permitted authorization scope + [Documentation] Test ID: 7.3.1.40.17 + ... Test title: POST Create a new VNF Snapshot with not permitted authorization scope + ... Test objective: The objective is to create a new VNF snapshot with not permitted authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: VNF snapshot is created + POST Create a new VNF Snapshot with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot index 67da2fae..a81f3f67 100644 --- a/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot +++ b/SOL003/VNFLifecycleManagement-API/VNFStateSnapshot.robot @@ -113,4 +113,30 @@ DELETE VNF State Snapshot - Method Not implemented ... Applicability: none ... Post-Conditions: none DELETE VNF State Snapshot - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +GET VNF State Snapshot - Complete File with permitted authorization scope + [Documentation] Test ID: 7.3.1.42.10 + ... Test title: GET Information about an individual VNF State Snapshot - Complete File with permitted authorization scope + ... Test objective: The objective is to fetch the whole content of a VNF State Snapshot using GET method with permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF State Snapshot - Complete with permitted authorization scope + Check HTTP Response Status Code Is 200 + Check HTTP Content-Type Header Is Set + +GET VNF State Snapshot - Complete File with not permitted authorization scope + [Documentation] Test ID: 7.3.1.42.11 + ... Test title: GET Information about an individual VNF State Snapshot - Complete File with not permitted authorization scope + ... Test objective: The objective is to fetch the whole content of a VNF State Snapshot using GET method with not permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.25.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF State Snapshot - Complete with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 24871fc3..0afd0efb 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -9,6 +9,8 @@ Library JSONLibrary Library Collections Library Process Library JSONSchemaLibrary schemas/ +Library jwt + #Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml #Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml @@ -17,7 +19,7 @@ Create Sessions Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance Wait For Process handle=mockInstance timeout=5s on_timeout=continue Create Mock Session ${callback_uri}:${callback_port} - + Get Vnf Instance [Arguments] ${vnfInstanceId} Set Headers {"Accept":"${ACCEPT}"} @@ -234,7 +236,7 @@ POST Cancel operation task Log Validate Status code ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + POST Cancel operation task with conflict Log Cancel an ongoing VNF lifecycle operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -252,6 +254,28 @@ POST Cancel operation task not existing Log Validate Status code ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Cancel operation task with permitted authorization scope + Log Cancel an ongoing VNF lifecycle operation + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Cancel a VNF lifecycle operation + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} + Log Validate Status code + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Cancel operation task with not permitted authorization scope + Log Cancel an ongoing VNF lifecycle operation + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${Authorization_Token}"} + Log Cancel a VNF lifecycle operation + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${CancelMode} + Log Validate Status code + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Cancel operation task log Trying to perform a GET. This method should not be implemented @@ -279,7 +303,7 @@ DELETE Cancel operation task Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/cancel ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Change External VNF Connectivity Log Trying to change the external connectivity of a VNF instance. @@ -288,6 +312,30 @@ POST Change External VNF Connectivity Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${body}= Get File jsons/changeExtVnfConnectivityRequest.json Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Change External VNF Connectivity with permitted authorization scope + Log Trying to change the external connectivity of a VNF instance with permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_EXT_CONN_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${body}= Get File jsons/changeExtVnfConnectivityRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Change External VNF Connectivity with not permitted authorization scope + Log Trying to change the external connectivity of a VNF instance with not permitted authorization scope. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_EXT_CONN_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${body}= Get File jsons/changeExtVnfConnectivityRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -317,7 +365,7 @@ DELETE Change External VNF Connectivity Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Change VNF deployment flavour Log Trying to change the deployment flavour of a VNF instance. @@ -353,6 +401,34 @@ POST Change VNF deployment flavour of not existing VNF ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Change VNF deployment flavour with permitted authorization scope + Log Trying to change the deployment flavour of a VNF instance with permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_FLAVOUR_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + ${template}= Get File jsons/changeVnfFlavourRequest.json + ${body}= Format String ${template} newFlavourId=${Flavour_ID} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Change VNF deployment flavour with not permitted authorization scope + Log Trying to change the deployment flavour of a VNF instance with not permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_FLAVOUR_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + ${template}= Get File jsons/changeVnfFlavourRequest.json + ${body}= Format String ${template} newFlavourId=${Flavour_ID} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET Change VNF deployment flavour log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -380,8 +456,8 @@ DELETE Change VNF deployment flavour Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_flavour ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - -POST Create a new vnfInstance + +POST Create a new vnfInstance Log Create VNF instance by POST to /vnf_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -488,7 +564,7 @@ GET multiple vnfInstances with exclude_fields attribute selector GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances?exclude_fields=${fields_vnfInstance} ${output}= Output response Set Suite Variable ${response} ${output} - + PUT VNFInstances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -514,7 +590,33 @@ DELETE VNFInstances Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${output}= Output response - Set Suite Variable ${response} ${output} + Set Suite Variable ${response} ${output} + +POST Create a new vnfInstance with permitted authorization scope + Log Create VNF instance by POST to /vnf_instances with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create a new vnfInstance with not permitted authorization scope + Log Create VNF instance by POST to /vnf_instances with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} POST individual vnfInstance log Trying to perform a POST. This method should not be implemented @@ -531,9 +633,31 @@ GET individual vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual vnfInstance with permitted authorization scope + log Trying to get information about an individual VNF instance with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_READONLY_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + +GET individual vnfInstance with not permitted authorization scope + log Trying to get information about an individual VNF instance with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_INSTANCE_INFO_READONLY_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + PUT individual vnfInstance log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -576,7 +700,7 @@ PATCH individual vnfInstance with conflict Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${anotherInstantiatedVnfInstanceId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + PATCH individual vnfInstance - Etag mismatch log Trying to modify an individual VNF instance Set Headers {"Accept":"${ACCEPT}"} @@ -590,7 +714,6 @@ PATCH individual vnfInstance - Etag mismatch ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - DELETE individual vnfInstance log Trying to delete an individual VNF instance Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -603,8 +726,9 @@ DELETE individual vnfInstance in INSTANTIATED state Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} -POST instantiate individual vnfInstance + Set Global Variable ${response} ${outputResponse} + +POST instantiate individual vnfInstance Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -613,7 +737,7 @@ POST instantiate individual vnfInstance Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + POST instantiate individual vnfInstance with conflict Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} @@ -649,9 +773,34 @@ DELETE instantiate individual vnfInstance log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST instantiate individual vnfInstance with permitted authorization scope + Log Trying to Instantiate a vnf Instance with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${INSTANTIATE_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${body}= Get File jsons/instantiateVnfRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -POST Scale vnfInstance + +POST instantiate individual vnfInstance with not permitted authorization scope + Log Trying to Instantiate a vnf Instance with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${INSTANTIATE_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${body}= Get File jsons/instantiateVnfRequest.json + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Scale vnfInstance Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -660,7 +809,8 @@ POST Scale vnfInstance ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + POST Scale vnfInstance with VNF NOT-INSTANTIATED Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} @@ -680,7 +830,31 @@ POST Scale vnfInstance with not existing VNF ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/scale ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance with permitted authorization scope + Log Trying to Instantiate a vnf Instance with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SCALE_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/scaleVnfRequest.json + ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance with not permitted authorization scope + Log Trying to Instantiate a vnf Instance with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SCALE_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/scaleVnfRequest.json + ${body}= Format String ${template} scaletype=${scaletype} scaleAspectId=${scaleAspectId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance Log Trying to get a scale a vnf Instance Set Headers {"Accept":"${ACCEPT}"} @@ -716,8 +890,9 @@ DELETE Scale vnfInstance ${body}= Get File jsons/scaleVnfRequest.json Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} -POST Scale vnfInstance to level with InstantiationLevelId attribute + Set Global Variable ${response} ${outputResponse} + +POST Scale vnfInstance to level with InstantiationLevelId attribute Log Trying to scale a vnf Instance to level Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -727,6 +902,7 @@ POST Scale vnfInstance to level with InstantiationLevelId attribute Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + POST Scale vnfInstance to level with scaleInfo attribute Log Trying to scale a vnf Instance to level Set Headers {"Accept":"${ACCEPT}"} @@ -755,8 +931,33 @@ POST Scale vnfInstance to level with not existing VNF ${template}= Get File jsons/scaleVnfToLevelRequest.json ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/scale_to_level ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +POST Scale vnfInstance to level with InstantiationLevelId attribute with permitted authorization scope + Log Trying to scale a vnf Instance to level with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SCALE_TO_LEVEL_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/scaleVnfToLevelRequestInstantiationLevelId.json + ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Scale vnfInstance to level with InstantiationLevelId attribute with not permitted authorization scope + Log Trying to scale a vnf Instance to level with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SCALE_TO_LEVEL_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/scaleVnfToLevelRequestInstantiationLevelId.json + ${body}= Format String ${template} instantiationLevelId=${instantiationLevelId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale_to_level ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Scale vnfInstance to level log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -805,8 +1006,34 @@ POST Terminate VNF in NOT-INSTANTIATED state ${body}= Format String ${template} terminationType=${terminationType} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/terminate ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +POST Terminate VNF with permitted authorization scope + Log Trying to terminate a VNF instance with permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${TERMINATE_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/terminateVnfRequest.json + ${body}= Format String ${template} terminationType=${terminationType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Terminate VNF with not permitted authorization scope + Log Trying to terminate a VNF instance with not permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${TERMINATE_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/terminateVnfRequest.json + ${body}= Format String ${template} terminationType=${terminationType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET Terminate VNF log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -833,7 +1060,7 @@ DELETE Terminate VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/terminate ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Heal VNF Log Trying to heal a VNF instance. @@ -844,8 +1071,8 @@ POST Heal VNF ${body}= Format String ${template} healingCause=${healingCause} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - + Set Global Variable ${response} ${outputResponse} + POST Heal VNF Not Instantiated Log Trying to heal a VNF instance. Set Headers {"Accept":"${ACCEPT}"} @@ -866,7 +1093,33 @@ POST Heal VNF Not Existing ${body}= Format String ${template} healingCause=${healingCause} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notExistingVnfInstanceId}/heal ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + +POST Heal VNF with permitted authorization scope + Log Trying to heal a VNF instance with permitted authorization scope. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${scopeValue}= Create Dictionary scopeValue=${HEAL_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/healVnfRequest.json + ${body}= Format String ${template} healingCause=${healingCause} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Heal VNF with not permitted authorization scope + Log Trying to heal a VNF instance with not permitted authorization scope. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${scopeValue}= Create Dictionary scopeValue=${HEAL_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/healVnfRequest.json + ${body}= Format String ${template} healingCause=${healingCause} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} GET Heal VNF log Trying to perform a GET. This method should not be implemented @@ -894,7 +1147,7 @@ DELETE Heal VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/heal ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Operate VNF Log Trying to operate a VNF instance. @@ -906,7 +1159,7 @@ POST Operate VNF Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - + POST Operate VNF with conflict Log Trying to operate a VNF instance. Set Headers {"Accept":"${ACCEPT}"} @@ -955,7 +1208,33 @@ DELETE Operate VNF Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + +POST Operate VNF with permitted authorization scope + Log Trying to operate a VNF instance with permitted authorization scope. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${scopeValue}= Create Dictionary scopeValue=${OPERATE_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/operateVnfRequest.json + ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Operate VNF with not permitted authorization scope + Log Trying to operate a VNF instance with not permitted authorization scope. + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${scopeValue}= Create Dictionary scopeValue=${OPERATE_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/operateVnfRequest.json + ${body}= Format String ${template} changeStateTo=${changeStateTo} stopType=${stopType} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/operate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Post VNF LCM Operation occurrences log Trying to perform a POST. This method should not be implemented @@ -971,7 +1250,7 @@ GET VNF LCM Operation occurrences Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} Get VNF LCM Operation occurrences with nextpage_opaque_marker parameter Log Get next page of subscriptions Set Headers {"Accept":"${ACCEPT}"} @@ -1036,7 +1315,27 @@ Get VNF LCM Operation occurrences with exclude_fields attribute selector Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs?exclude_fields=${fields_vnfLcmOpOcc} ${output}= Output response - Set Suite Variable ${response} ${output} + Set Suite Variable ${response} ${output} +GET VNF LCM Operation occurrences with permitted authorization scope + Log Query status information about multiple VNF lifecycle management operation occurrences. + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +GET VNF LCM Operation occurrences with not permitted authorization scope + Log Query status information about multiple VNF lifecycle management operation occurrences. + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} PUT VNF LCM Operation occurrences log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1072,7 +1371,27 @@ Get Individual VNF LCM Operation occurrences Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +Get Individual VNF LCM Operation occurrences with permitted authorization scope + Log Query status information about multiple VNF lifecycle management operation occurrences. + Set Headers {"Accept":"${ACCEPT}"} + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Get Individual VNF LCM Operation occurrences with not permitted authorization scope + Log Query status information about multiple VNF lifecycle management operation occurrences. + Set Headers {"Accept":"${ACCEPT}"} + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Put multiple VNF instances log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1093,14 +1412,16 @@ Delete multiple VNF instances Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + Post Retry operation Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + Post Retry operation with conflict Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -1143,14 +1464,32 @@ Delete Retry operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +Post Retry operation with permitted authorization scope + Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Post Retry operation with not permitted authorization scope + Log Retry a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/retry + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Post Rollback operation Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} Post Rollback operation with conflict Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -1193,15 +1532,32 @@ Delete Rollback operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} +Post Rollback operation with permitted authorization scope + Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Post Rollback operation with not permitted authorization scope + Log Rollback a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/rollback + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Post Fail operation - Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - Post Fail operation with conflict Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -1215,8 +1571,27 @@ Post Fail operation not existing Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${notExistingvnfLcmOpOccId}/fail + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +Post Fail operation with permitted authorization scope + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +Post Fail operation with not permitted authorization scope + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Log Execute Query and validate response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Get Fail operation Log Trying to perform a GET. This method should not be implemented. @@ -1246,7 +1621,8 @@ Delete Fail operation Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId}/fail ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + Post Create subscription Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions Set Headers {"Accept":"${ACCEPT}"} @@ -1265,7 +1641,6 @@ Post Create subscription Log Verify notification endpoint is tested Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} - Post Create subscription - DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 0 VNFM is not permitting duplication. Skipping the test @@ -1285,7 +1660,7 @@ Post Create subscription - DUPLICATION Log Verify notification endpoint is tested Verify Mock Expectation ${notification_request} Clear Requests ${callback_endpoint} - + Post Create subscription - NO-DUPLICATION Log Trying to create a subscription with an already created content Pass Execution If ${VNFM_DUPLICATION} == 1 VNFM permits duplication. Skipping the test @@ -1369,6 +1744,46 @@ Get subscriptions - invalid filter # GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?exclude_fields=${fields_subscription} # ${output}= Output response # Set Suite Variable ${response} ${output} +Post Create subscription with permitted authorization scope + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/lccnSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Log Verify notification endpoint is tested + Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} +Post Create subscription with not permitted authorization scope + Log Create subscription instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/lccnSubscriptionRequest.json + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + Log Creating mock request and response to handle GET operation on notification endpoint + &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_response}= Create Mock Response status_code=204 + Log Issue the subscription request + Create Mock Expectation ${notification_request} ${notification_response} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + Log Verify notification endpoint is tested + Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} PUT subscriptions log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1392,7 +1807,7 @@ DELETE subscriptions Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} Post Create Individual subscription log Trying to perform a POST. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1408,6 +1823,25 @@ Get Individual subscription Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +Get Individual subscription with permitted authorization scope + log Trying to get information about an individual subscription with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +Get Individual subscription with not permitted authorization scope + log Trying to get information about an individual subscription with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Put Individual subscription log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} @@ -1427,10 +1861,11 @@ Patch Individual subscription Delete Individual subscription log Try to delete an individual subscription Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${Authorization_Token}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + Put Notification subscription log Trying to perform a PUT. This method should not be implemented Put ${callback_endpoint} @@ -1684,9 +2119,35 @@ POST Change Current VNF Package Task ${template}= Get File jsons/changeCurrentVnfPkgRequest.json ${body}= Format String ${template} vnfdId=${vnfdId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Change Current VNF Package Task with permitted authorization scope + Log Trying to change current VNF package task with permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_VNFPKG_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/changeCurrentVnfPkgRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST Change Current VNF Package Task with not permitted authorization scope + Log Trying to change current VNF package task with not permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${CHANGE_VNFPKG_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/changeCurrentVnfPkgRequest.json + ${body}= Format String ${template} vnfdId=${vnfdId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + GET Change Current VNF Package Task log Trying to perform a GET. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} @@ -1713,7 +2174,7 @@ DELETE Change Current VNF Package Task Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} Check HTTP Location Header Contains URI of Created Resource ${URI}= Get Value From Json ${response['headers']} $..Location @@ -1728,8 +2189,8 @@ POST Create VNF Snapshot Task ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - + Set Global Variable ${response} ${outputResponse} + POST Create VNF Snapshot Task NOT SUPPORTED Log Trying to request a snapshot of a VNF instance for which task resource does not exist Set Headers {"Accept":"${ACCEPT}"} @@ -1760,6 +2221,32 @@ POST Create VNF Snapshot Task INVALID IDENTIFIER ${template}= Get File jsons/CreateVnfSnapshotRequest.json ${body}= Format String ${template} vnfSnapshotInfoId=${invalidVnfSnapshotInfoId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task with permitted authorization scope + Log Trying to request a snapshot of a VNF instance with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${CREATE_SNAPSHOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create VNF Snapshot Task with not permitted authorization scope + Log Trying to request a snapshot of a VNF instance with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${CREATE_SNAPSHOT_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/CreateVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1800,7 +2287,7 @@ POST Revert to VNF Snapshot Task ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Revert to VNF Snapshot Task NOT SUPPORTED Log Trying to revert to a snapshot of a VNF instance for which task resource does not exist @@ -1851,17 +2338,43 @@ DELETE Revert to VNF Snapshot Task Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} + +POST Revert to VNF Snapshot Task with permitted authorization scope + Log Trying to initiate revert to VNF snapshot task with permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${REVERT_TO_SNAPSHOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/RevertToVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Revert to VNF Snapshot Task with not permitted authorization scope + Log Trying to initiate revert to VNF snapshot task with not permitted authorization scope. + ${scopeValue}= Create Dictionary scopeValue=${REVERT_TO_SNAPSHOT_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template}= Get File jsons/RevertToVnfSnapshotRequest.json + ${body}= Format String ${template} vnfSnapshotInfoId=${vnfSnapshotInfoId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} -POST Create a new VNF Snapshot +POST Create a new VNF Snapshot Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json ${body}= Format String ${template} vnfSnapshotPkgId=${vnfSnapshotPkgId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} GET multiple VNF Snapshots Log Query VNF The GET method queries information about multiple VNF snapshots. @@ -1970,7 +2483,33 @@ DELETE VNF Snapshots Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + +POST Create a new VNF Snapshot with permitted authorization scope + Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots with permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json + ${body}= Format String ${template} vnfSnapshotPkgId=${vnfSnapshotPkgId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST Create a new VNF Snapshot with not permitted authorization scope + Log Create VNF snapshot by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots with not permitted authorization scope + ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + ${template} = Get File jsons/CreateVnfSnapshotInfoRequest.json + ${body}= Format String ${template} vnfSnapshotPkgId=${vnfSnapshotPkgId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} POST individual VNF Snapshot log Trying to perform a POST. This method should not be implemented @@ -1985,10 +2524,10 @@ GET individual VNF Snapshot log Trying to get information about an individual VNF snapshot Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} GET individual VNF Snapshot with invalid URI log Trying to get information about an individual VNF snapshot @@ -2048,15 +2587,37 @@ DELETE individual VNF Snapshot - CONFLICT Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_InUse} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot with permitted authorization scope + log Trying to get information about an individual VNF snapshot + ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET individual VNF Snapshot with not permitted authorization scope + log Trying to get information about an individual VNF snapshot + ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} Check Postcondition VNF Snapshot Resource Is Deleted - Get individual VNF Snapshot + GET individual VNF Snapshot Integer response status 404 Log VNF Snapshot Resource deleted Check Postcondition VNF Snapshot Resource Existence - Get individual VNF Snapshot + GET individual VNF Snapshot Integer response status 200 Log VNF Snapshot Resource is not deleted @@ -2075,7 +2636,7 @@ GET VNF State Snapshot - Complete Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} GET VNF State Snapshot - Range Request Pass Execution If ${VNFM_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. @@ -2104,6 +2665,26 @@ GET VNF State Snapshot - Conflict in State Set Headers {"Accept":"${ACCEPT_OCTET}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId_creationIncomplete}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF State Snapshot - Complete with permitted authorization scope + log Trying to fetch the complete contents of an VNF State Snapshot with permitted authorization scope + Set Headers {"Accept":"${ACCEPT_OCTET}"} + ${scopeValue}= Create Dictionary scopeValue=${VNF_STATE_SNAPSHOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET VNF State Snapshot - Complete with not permitted authorization scope + log Trying to fetch the complete contents of an VNF State Snapshot with not permitted authorization scope + Set Headers {"Accept":"${ACCEPT_OCTET}"} + ${scopeValue}= Create Dictionary scopeValue=${VNF_STATE_SNAPSHOT_NOT_PERMITTED_SCOPE} + ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -2131,7 +2712,7 @@ DELETE VNF State Snapshot Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots/${vnfSnapshotInfoId}/vnf_state_snapshot ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} + Set Global Variable ${response} ${outputResponse} POST Select VNF Deployable Modules log Trying to select deployable modules of VNF instance @@ -2218,3 +2799,8 @@ Check HTTP Content-Length Header Is Set Should Contain ${response['headers']} Content-Length Should Be Equal As Strings ${response['headers']['Content-Length']} ${full_length} Log Header Content-Length is present + +JWT Encode + [Arguments] ${payload} ${key} ${algorithm} + ${encoded}= Evaluate jwt.encode(${payload}, ${key}, ${algorithm}) + [Return] ${encoded} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index f3c71a9d..4c543a02 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -159,7 +159,7 @@ GET status information about multiple VNF LCM Operation OCC to get Paged Respons Check HTTP Response Header Contain Link GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter - [Documentation] Test ID: 7.3.1.11.12a + [Documentation] Test ID: 7.3.1.11.12a ... Test title: GET information about multiple VNF LCM Operation OCC as a Paged Response with nextpage_opauque_marker parameter ... Test objective: The objective is to query information about multiple VNF lifecycle management operation occurrences as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter ... Pre-conditions: A request for retrieving multiple VNF lifecycle management operation occurrences as a paged response has been successfully issued (Test ID 7.3.1.11.12) @@ -194,4 +194,30 @@ GET status information about multiple VNF LCM Operation OCC with "exclude_defaul ... Post-Conditions: none Get VNF LCM Operation occurrences with exclude_default and fields attribute selector Check HTTP Response Status Code Is 202 - Check HTTP Response Body Json Schema Is VnfLcmOpOccs \ No newline at end of file + Check HTTP Response Body Json Schema Is VnfLcmOpOccs + +GET status information about multiple VNF LCM Operation OCC with permitted authorization scope + [Documentation] Test ID: 7.3.1.11.15 + ... Test title: GET status information about multiple VNF LCM Operation OCC with permitted authorization scope + ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF LCM Operation occurrences with permitted authorization scope + Check HTTP Response Status Code Is 202 + Check HTTP Response Body Json Schema Is VnfLcmOpOccs + +GET status information about multiple VNF LCM Operation OCC with not permitted authorization scope + [Documentation] Test ID: 7.3.1.11.16 + ... Test title: GET status information about multiple VNF LCM Operation OCC with not permitted authorization scope + ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope. + ... Pre-conditions: none + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET VNF LCM Operation occurrences with not permitted authorization scope + Check HTTP Response Status Code Is 403 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index 81a2d522..f0f6ae9d 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -5,11 +5,49 @@ ${VNFM_SCHEMA} https ${ACCEPT} application/json ${ACCEPT_JSON} application/json ${CONTENT_TYPE} application/json +${OAUTH_KEY} +${OAUTH_ENCRYPTION_ALGORITHM} HS256 ${AUTHORIZATION_HEADER} Authorization ${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 ${AUTH_USAGE} 1 ${CONTENT_TYPE_PATCH} application/merge-patch+json +${INSTANTIATE_PERMITTED_SCOPE} vnflcm:v2:instantiate +${SCALE_PERMITTED_SCOPE} vnflcm:v2:scale +${SCALE_TO_LEVEL_PERMITTED_SCOPE} vnflcm:v2:scale_to_level +${CHANGE_FLAVOUR_PERMITTED_SCOPE} vnflcm:v2:change_flavour +${TERMINATE_PERMITTED_SCOPE} vnflcm:v2:terminate +${HEAL_PERMITTED_SCOPE} vnflcm:v2:heal +${CHANGE_EXT_CONN_PERMITTED_SCOPE} vnflcm:v2:change_ext_conn +${OPERATE_PERMITTED_SCOPE} vnflcm:v2:operate +${CREATE_SNAPSHOT_PERMITTED_SCOPE} vnflcm:v2:create_snapshot +${REVERT_TO_SNAPSHOT_PERMITTED_SCOPE} vnflcm:v2:revert_to_snapshot +${CHANGE_VNFPKG_PERMITTED_SCOPE} vnflcm:v2:change_vnfpkg +${VNF_INSTANCE_INFO_PERMITTED_SCOPE} vnflcm:v2:vnf_instance_info +${VNF_INSTANCE_INFO_READONLY_PERMITTED_SCOPE} vnflcm:v2:vnf_instance_info:readonly +${OP_OCCS_PERMITTED_SCOPE} vnflcm:v2:op_occs +${SUBSCRIPTIONS_PERMITTED_SCOPE} vnflcm:v2:subscriptions +${VNF_SNAPSHOT_INFO_PERMITTED_SCOPE} vnflcm:v2:vnf_snapshot_info +${VNF_STATE_SNAPSHOT_PERMITTED_SCOPE} vnflcm:v2:vnf_state_snapshot + +${INSTANTIATE_NOT_PERMITTED_SCOPE} vnflcm:v2:instantiate:invalid +${SCALE_NOT_PERMITTED_SCOPE} vnflcm:v2:scale:invalid +${SCALE_TO_LEVEL_NOT_PERMITTED_SCOPE} vnflcm:v2:scale_to_level:invalid +${CHANGE_FLAVOUR_NOT_PERMITTED_SCOPE} vnflcm:v2:change_flavour:invalid +${TERMINATE_NOT_PERMITTED_SCOPE} vnflcm:v2:terminate:invalid +${HEAL_NOT_PERMITTED_SCOPE} nflcm:v2:heal:invalid +${CHANGE_EXT_CONN_NOT_PERMITTED_SCOPE} vnflcm:v2:change_ext_conn:invalid +${OPERATE_NOT_PERMITTED_SCOPE} vnflcm:v2:operate:invalid +${CREATE_SNAPSHOT_NOT_PERMITTED_SCOPE} vnflcm:v2:create_snapshot:invalid +${REVERT_TO_SNAPSHOT_NOT_PERMITTED_SCOPE} vnflcm:v2:revert_to_snapshot:invalid +${CHANGE_VNFPKG_NOT_PERMITTED_SCOPE} vnflcm:v2:change_vnfpkg:invalid +${VNF_INSTANCE_INFO_NOT_PERMITTED_SCOPE} vnflcm:v2:vnf_instance_info:invalid +${VNF_INSTANCE_INFO_READONLY_NOT_PERMITTED_SCOPE} vnflcm:v2:vnf_instance_info:readonly:invalid +${OP_OCCS_NOT_PERMITTED_SCOPE} vnflcm:v2:op_occs:invalid +${SUBSCRIPTIONS_NOT_PERMITTED_SCOPE} vnflcm:v2:subscriptions:invalid +${VNF_SNAPSHOT_INFO_NOT_PERMITTED_SCOPE} vnflcm:v2:vnf_snapshot_info:invalid +${VNF_STATE_SNAPSHOT_NOT_PERMITTED_SCOPE} vnflcm:v2:vnf_state_snapshot:invalid + ${apiRoot} / ${apiName} vnflcm ${apiMajorVersion} v2 diff --git a/requirements.txt b/requirements.txt index e703bb66..7df57b4f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,4 +9,4 @@ robotframework-jsonlibrary==0.3 robotframework-jsonschemalibrary==1.0 robotframework-mockserver==0.0.7 robotframework-requests==0.7.1 -PyJWT==2.9.0 \ No newline at end of file +PyJWT==2.9.0 -- GitLab From 3e0124cf367e14d7172c9301bb66d8871a5f63d2 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 13 Sep 2024 17:29:19 +0500 Subject: [PATCH 25/30] editorial change of updating ChangeCurrentVNfPackageTask oauth not permitted testcase --- .../ChangeCurrentVNFPackageTask.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index 8860beef..7b05fd10 100644 --- a/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL003/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -97,8 +97,8 @@ POST Change current VNF Package Task with permitted authorization scope POST Change current VNF Package Task with not permitted authorization scope [Documentation] Test ID: 7.3.1.37.8 - ... Test title: POST Change current VNF Package Task - ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with not permitted authorization scope. + ... Test title: POST Change current VNF Package Task with not permitted authorization scope + ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with not permitted authorization scope with not permitted authorization scope. ... Pre-conditions: none ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM -- GitLab From 245f2a3ba1c2f761e8b9e7a6c5a64b360677956f Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 13 Sep 2024 17:31:48 +0500 Subject: [PATCH 26/30] editorial change of updating CreateVNFSnapshotTask oauth permitted testcase objective --- SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index 46afa0e0..f1e87e46 100644 --- a/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -111,7 +111,7 @@ DELETE Create VNF Snapshot Task - Method not implemented POST Create VNF Snapshot Task with permitted authorization scope [Documentation] Test ID: 7.3.1.38.9 ... Test title: POST Create VNF Snapshot Task with permitted authorization scope - ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with permitted authorization scope with permitted authorization scope. + ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with permitted authorization scope. ... Pre-conditions: none ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM -- GitLab From 9ea667d382ae161ac5a0731e2993c3c6a2e8b357 Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Fri, 13 Sep 2024 17:37:14 +0500 Subject: [PATCH 27/30] editorial change in oauth testcase of IndividualSubscription, HealVNF, and FailOperationTask --- SOL003/VNFLifecycleManagement-API/FailOperationTask.robot | 4 ++-- SOL003/VNFLifecycleManagement-API/HealVNFTask.robot | 2 +- .../VNFLifecycleManagement-API/IndividualSubscription.robot | 4 ++-- .../VnfLcmMntOperationKeywords.robot | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot index cd4fd6b1..dfb02cfb 100644 --- a/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL003/VNFLifecycleManagement-API/FailOperationTask.robot @@ -111,8 +111,8 @@ POST Fail operation task with permitted authorization scope POST Fail operation task with not permitted authorization scope [Documentation] Test ID: 7.3.1.15.9 - ... Test title: POST Fail operation task with permitted authorization scope - ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation with permitted authorization scope + ... Test title: POST Fail operation task with not permitted authorization scope + ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM diff --git a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot index 46e771e0..324ee24f 100644 --- a/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL003/VNFLifecycleManagement-API/HealVNFTask.robot @@ -111,7 +111,7 @@ POST Heal a vnfInstance with permitted authorization scope POST Heal a vnfInstance with not permitted authorization scope [Documentation] Test ID: 7.3.1.8.9 - ... Test title: POST Heal a vnfInstance with permitted authorization scope + ... Test title: POST Heal a vnfInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method heal a VNF instance with not permitted authorization scope ... Pre-conditions: the VNF instance resource is not in NOT-INSTANTIATED state ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 diff --git a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot index 5275e77d..a18e72e4 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -95,8 +95,8 @@ GET Individual Subscription with permitted authorization scope GET Individual Subscription with not permitted authorization scope [Documentation] Test ID: 7.3.1.18.8 - ... Test title: GET Individual Subscription with permitted authorization scope - ... Test objective: The objective is to test the Get individual subscription with permitted authorization scope + ... Test title: GET Individual Subscription with not permitted authorization scope + ... Test objective: The objective is to test the Get individual subscription with not permitted authorization scope ... Pre-conditions: none ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index 0afd0efb..de62a788 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -1575,7 +1575,7 @@ Post Fail operation not existing Set Global Variable ${response} ${outputResponse} Post Fail operation with permitted authorization scope - Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} @@ -1584,7 +1584,7 @@ Post Fail operation with permitted authorization scope ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Post Fail operation with not permitted authorization scope - Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure + Log mark as Failed a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} -- GitLab From 7f1e452513dba09a97621dd729e3c72cacc1676e Mon Sep 17 00:00:00 2001 From: Muhammad Umair Khan Date: Sat, 14 Sep 2024 20:24:21 +0500 Subject: [PATCH 28/30] editorial change of updating Revert To VNF Snapshot oauth test title and objective --- .../VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index 0fd1584a..8dce5412 100644 --- a/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL003/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -98,7 +98,7 @@ DELETE Revert to VNF Snapshot Task - Method not implemented POST Revert to VNF Snapshot Task with permitted authorization scope [Documentation] Test ID: 7.3.1.39.8 ... Test title: POST Revert to VNF Snapshot Task with permitted authorization scope - ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with permitted authorization scope with permitted authorization scopes. + ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with permitted authorization scope. ... Pre-conditions: none ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM @@ -111,7 +111,7 @@ POST Revert to VNF Snapshot Task with permitted authorization scope POST Revert to VNF Snapshot Task with not permitted authorization scope [Documentation] Test ID: 7.3.1.39.9 ... Test title: POST Revert to VNF Snapshot Task with not permitted authorization scope - ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with not permitted authorization scope with not permitted authorization scope. + ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with not permitted authorization scope. ... Pre-conditions: none ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 003 [1] v4.5.1 ... Config ID: Config_prod_VNFM -- GitLab From 871fddd2b555e841ab42999341b0edf7d89abc8e Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 16 Sep 2024 10:20:57 +0500 Subject: [PATCH 29/30] editorial change of upadting OAuth Test case title, objective and log --- .../IndividualVNFInstance.robot | 4 ++-- .../VnfLcmMntOperationKeywords.robot | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 0d2ee939..c63baa78 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -129,7 +129,7 @@ Get Information about an individual VNF Instance - Not Found Check HTTP Response Body Json Schema Is ProblemDetails Get Information about an individual VNF Instance with permitted authorization scope - [Documentation] Test ID: 7.3.1.2.2 + [Documentation] Test ID: 7.3.1.2.10 ... Test title: Get Information about an individual VNF Instance with permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope ... Pre-conditions: none @@ -144,7 +144,7 @@ Get Information about an individual VNF Instance with permitted authorization sc Check HTTP Response Body vnfInstance content against VNF Descriptor Get Information about an individual VNF Instance with not permitted authorization scope - [Documentation] Test ID: 7.3.1.2.2 + [Documentation] Test ID: 7.3.1.2.11 ... Test title: Get Information about an individual VNF Instance with not permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope ... Pre-conditions: none diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index de62a788..c5ccf660 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -256,7 +256,7 @@ POST Cancel operation task not existing Set Global Variable ${response} ${outputResponse} POST Cancel operation task with permitted authorization scope - Log Cancel an ongoing VNF lifecycle operation + Log Cancel an ongoing VNF lifecycle operation with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} @@ -267,7 +267,7 @@ POST Cancel operation task with permitted authorization scope Set Global Variable ${response} ${outputResponse} POST Cancel operation task with not permitted authorization scope - Log Cancel an ongoing VNF lifecycle operation + Log Cancel an ongoing VNF lifecycle operation with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${Authorization_Token}"} @@ -1317,7 +1317,7 @@ Get VNF LCM Operation occurrences with exclude_fields attribute selector ${output}= Output response Set Suite Variable ${response} ${output} GET VNF LCM Operation occurrences with permitted authorization scope - Log Query status information about multiple VNF lifecycle management operation occurrences. + Log Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Set Headers {"Accept":"${ACCEPT}"} @@ -1327,7 +1327,7 @@ GET VNF LCM Operation occurrences with permitted authorization scope ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} GET VNF LCM Operation occurrences with not permitted authorization scope - Log Query status information about multiple VNF lifecycle management operation occurrences. + Log Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope. ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Set Headers {"Accept":"${ACCEPT}"} @@ -1373,7 +1373,7 @@ Get Individual VNF LCM Operation occurrences ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM Operation occurrences with permitted authorization scope - Log Query status information about multiple VNF lifecycle management operation occurrences. + Log Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope. Set Headers {"Accept":"${ACCEPT}"} ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} @@ -1383,7 +1383,7 @@ Get Individual VNF LCM Operation occurrences with permitted authorization scope ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Get Individual VNF LCM Operation occurrences with not permitted authorization scope - Log Query status information about multiple VNF lifecycle management operation occurrences. + Log Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope. Set Headers {"Accept":"${ACCEPT}"} ${scopeValue}= Create Dictionary scopeValue=${OP_OCCS_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} @@ -2590,7 +2590,7 @@ DELETE individual VNF Snapshot - CONFLICT Set Global Variable ${response} ${outputResponse} GET individual VNF Snapshot with permitted authorization scope - log Trying to get information about an individual VNF snapshot + log Trying to get information about an individual VNF snapshot with permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Set Headers {"Accept":"${ACCEPT}"} @@ -2601,7 +2601,7 @@ GET individual VNF Snapshot with permitted authorization scope Set Global Variable ${response} ${outputResponse} GET individual VNF Snapshot with not permitted authorization scope - log Trying to get information about an individual VNF snapshot + log Trying to get information about an individual VNF snapshot with not permitted authorization scope ${scopeValue}= Create Dictionary scopeValue=${VNF_SNAPSHOT_INFO_NOT_PERMITTED_SCOPE} ${authorizationToken}= JWT Encode payload=${scopeValue} key=${OAUTH_KEY} algorithm=${OAUTH_ENCRYPTION_ALGORITHM} Set Headers {"Accept":"${ACCEPT}"} -- GitLab From ea79457fe82fab95e43bb52f6e0dc128684367c5 Mon Sep 17 00:00:00 2001 From: Giacomo Bernini Date: Wed, 25 Sep 2024 09:03:41 +0000 Subject: [PATCH 30/30] updated tosca reference descriptor - resolve SOL WG comment/feedback --- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index 603b1887..250f1c70 100644 --- a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -1,8 +1,8 @@ -tosca_definitions_version: tosca_simple_yaml_1_2 +tosca_definitions_version: tosca_simple_yaml_1_3 description: "TST010 reference VNF-B" imports: - - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml + - https://forge.etsi.org/rep/nfv/SOL001/raw/v4.4.1/etsi_nfv_sol001_vnfd_types.yaml metadata: descriptor_id: "VNF-B" @@ -44,7 +44,7 @@ node_types: type: list entry_schema: type: string - default: [ 'etsivnfm:v2.3.1' ] + default: [ 'etsivnfm:v4.5.1' ] interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" @@ -162,4 +162,4 @@ topology_template: terminate: implementation: terminate-example.yaml operate: - implementation: operate-example.yaml \ No newline at end of file + implementation: operate-example.yaml -- GitLab