From 2d904b181fba52c7bb0a8d0e4688c8d357bc36ea Mon Sep 17 00:00:00 2001
From: hammad zafar <hammad.zafar@xflowresearch.com>
Date: Fri, 19 Feb 2021 12:39:03 +0500
Subject: [PATCH] implementing deltas for 3.3.1

---
 .../ChangeCurrentVNFPackageTask.robot         |  91 +++++++++
 .../CreateVNFSnapshotTask.robot               | 117 +++++++++++
 .../RevertToVNFSnapshotTask.robot             | 104 ++++++++++
 .../VNFInstances.robot                        |  39 ++--
 .../VnfLcmOperationKeywords.robot             | 183 ++++++++++++++++++
 .../environment/variables.txt                 |   8 +-
 .../jsons/CreateVnfSnapshotRequest.json       |   3 +
 .../jsons/RevertToVnfSnapshotRequest.json     |   5 +
 .../jsons/changeCurrentVnfPkgRequest.json     |   3 +
 9 files changed, 539 insertions(+), 14 deletions(-)
 create mode 100644 SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot
 create mode 100644 SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot
 create mode 100644 SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot
 create mode 100644 SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json
 create mode 100644 SOL002/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json
 create mode 100644 SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json

diff --git a/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot
new file mode 100644
index 00000000..37fc722d
--- /dev/null
+++ b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot
@@ -0,0 +1,91 @@
+*** Settings ***
+Resource    environment/variables.txt 
+Resource    VnfLcmOperationKeywords.robot
+Library    REST    ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}     ssl_verify=false
+Library    OperatingSystem
+Library    JSONLibrary
+Library    JSONSchemaLibrary    schemas/
+Suite Setup    Check resource existence
+
+*** Test Cases ***
+POST Change current VNF Package Task 
+    [Documentation]    Test ID: 6.3.5.22.1
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: in response header Location shall not be null         
+    POST Change Current VNF Package Task
+    Check HTTP Response Status Code Is    202
+    Check Operation Occurrence Id
+
+POST Change current VNF Package Task - Conflict
+    [Documentation]    Test ID: 6.3.5.22.2
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: There is another lifecycle management operation ongoing.
+    ...    Post-Conditions: none
+    POST Change Current VNF Package Task
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is    ProblemDetails 
+    
+GET Change current VNF Package Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.22.3
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    GET Change Current VNF Package Task
+    Check HTTP Response Status Code Is    405
+
+PUT Change current VNF Package Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.22.4
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    PUT Change Current VNF Package Task
+    Check HTTP Response Status Code Is    405
+
+PATCH Change current VNF Package Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.22.5
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    PATCH Change Current VNF Package Task
+    Check HTTP Response Status Code Is    405
+    
+DELETE Change current VNF Package Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.22.6
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    DELETE Change Current VNF Package Task
+    Check HTTP Response Status Code Is    405
+
+*** Keywords ***
+Check resource existence
+    Set Headers    {"Accept":"${ACCEPT}"}  
+    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} 
+    Integer    response status    200
\ No newline at end of file
diff --git a/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot
new file mode 100644
index 00000000..3befe481
--- /dev/null
+++ b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot
@@ -0,0 +1,117 @@
+*** Settings ***
+Resource    environment/variables.txt 
+Resource    VnfLcmOperationKeywords.robot
+Library    REST    ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}     ssl_verify=false
+Library    OperatingSystem
+Library    JSONLibrary
+Library    JSONSchemaLibrary    schemas/
+Suite Setup    Check resource existence
+
+*** Test Cases ***
+POST Create VNF Snapshot Task 
+    [Documentation]    Test ID: 6.3.5.23.1
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: in response header Location shall not be null         
+    POST Create VNF Snapshot Task
+    Check HTTP Response Status Code Is    202
+    Check Operation Occurrence Id
+
+POST Create VNF Snapshot Task - NOT FOUND
+    [Documentation]    Test ID: 6.3.5.23.2
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: Task is not supported for the VNF instance represented by the parent resource.
+    ...    Post-Conditions: none
+    POST Create VNF Snapshot Task NOT SUPPORTED
+    Check HTTP Response Status Code Is    404
+    Check HTTP Response Body Json Schema Is    ProblemDetails 
+
+POST Create VNF Snapshot Task - CONFLICT
+    [Documentation]    Test ID: 6.3.5.23.3
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: VNF instance is in NOT_INSTANTIATED state.
+    ...    Post-Conditions: none
+    POST Create VNF Snapshot Task VNF_NOT_INSTANTIATED
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is    ProblemDetails 
+
+POST Create VNF Snapshot Task - UNPROCESSIBLE ENTITY
+    [Documentation]    Test ID: 6.3.5.23.4
+    ...    Test title: POST Create VNF Snapshot Task - UNPROCESSIBLE ENTITY
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: The identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid.
+    ...    Post-Conditions: none
+    POST Create VNF Snapshot Task INVALID IDENTIFIER
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is    ProblemDetails 
+    
+GET Create VNF Snapshot Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.23.5
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    GET Create VNF Snapshot Task
+    Check HTTP Response Status Code Is    405
+
+PUT Create VNF Snapshot Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.23.6
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    PUT Create VNF Snapshot Task
+    Check HTTP Response Status Code Is    405
+
+PATCH Create VNF Snapshot Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.23.7
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    PATCH Create VNF Snapshot Task
+    Check HTTP Response Status Code Is    405
+    
+DELETE Create VNF Snapshot Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.23.8
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    DELETE Create VNF Snapshot Task
+    Check HTTP Response Status Code Is    405
+
+*** Keywords ***
+Check resource existence
+    Set Headers    {"Accept":"${ACCEPT}"}  
+    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} 
+    Integer    response status    200
\ No newline at end of file
diff --git a/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot
new file mode 100644
index 00000000..3f14f220
--- /dev/null
+++ b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot
@@ -0,0 +1,104 @@
+*** Settings ***
+Resource    environment/variables.txt 
+Resource    VnfLcmOperationKeywords.robot
+Library    REST    ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT}     ssl_verify=false
+Library    OperatingSystem
+Library    JSONLibrary
+Library    JSONSchemaLibrary    schemas/
+Suite Setup    Check resource existence
+
+*** Test Cases ***
+POST Revert to VNF Snapshot Task 
+    [Documentation]    Test ID: 6.3.5.24.1
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: in response header Location shall not be null         
+    POST Revert to VNF Snapshot Task
+    Check HTTP Response Status Code Is    202
+    Check Operation Occurrence Id
+
+POST Revert to VNF Snapshot Task - NOT FOUND
+    [Documentation]    Test ID: 6.3.5.24.2
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: Task is not supported for the VNF instance represented by the parent resource.
+    ...    Post-Conditions: none
+    POST Revert to VNF Snapshot Task NOT SUPPORTED
+    Check HTTP Response Status Code Is    404
+    Check HTTP Response Body Json Schema Is    ProblemDetails 
+
+POST Revert to VNF Snapshot Task - CONFLICT
+    [Documentation]    Test ID: 6.3.5.24.3
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: VNF instance is in NOT_INSTANTIATED state.
+    ...    Post-Conditions: none
+    POST Revert to VNF Snapshot Task VNF_NOT_INSTANTIATED
+    Check HTTP Response Status Code Is    409
+    Check HTTP Response Body Json Schema Is    ProblemDetails 
+
+GET Revert to VNF Snapshot Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.24.4
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    GET Revert to VNF Snapshot Task
+    Check HTTP Response Status Code Is    405
+
+PUT Revert to VNF Snapshot Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.24.5
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    PUT Revert to VNF Snapshot Task
+    Check HTTP Response Status Code Is    405
+
+PATCH Revert to VNF Snapshot Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.24.6
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    PATCH Revert to VNF Snapshot Task
+    Check HTTP Response Status Code Is    405
+    
+DELETE Revert to VNF Snapshot Task - Method not implemented
+    [Documentation]    Test ID: 6.3.5.24.7
+    ...    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 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: none
+    ...    Post-Conditions: none 
+    DELETE Revert to VNF Snapshot Task
+    Check HTTP Response Status Code Is    405
+
+*** Keywords ***
+Check resource existence
+    Set Headers    {"Accept":"${ACCEPT}"}  
+    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} 
+    Integer    response status    200
\ No newline at end of file
diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot
index c2d5451b..f8dbac29 100644
--- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot
+++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot
@@ -12,7 +12,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 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    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 get information about multiples VNF instances
     ...    Pre-conditions: none
-    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    Applicability: none
     ...    Post-Conditions: none
@@ -40,7 +40,7 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based
     ...    Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters
     ...    Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters
     ...    Pre-conditions: none
-    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    Applicability: none
     ...    Post-Conditions: none
@@ -53,7 +53,7 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec
     ...    Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector
     ...    Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters
     ...    Pre-conditions: none
-    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    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 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    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 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    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 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    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 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    Applicability: none
     ...    Post-Conditions: none
@@ -118,7 +118,7 @@ PUT VNFInstances - Method not implemented
     ...    Test title: PUT 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 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    Applicability: none
     ...    Post-Conditions: none
@@ -130,7 +130,7 @@ PATCH VNFInstances - Method not implemented
     ...    Test title: PATCH 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 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    Applicability: none
     ...    Post-Conditions: none
@@ -142,7 +142,7 @@ DELETE VNFInstances - Method not implemented
     ...    Test title: DELETE 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.5 - ETSI GS NFV-SOL 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    Applicability: none
     ...    Post-Conditions: VNF instance not deleted
@@ -154,10 +154,23 @@ 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 002 [2] v2.7.1
+    ...    Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v3.3.1
     ...    Config ID: Config_prod_VE
     ...    Applicability: none
     ...    Post-Conditions: none
     GET multiple vnfInstances with exclude_default and fields attribute selector
     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 - UNPROCESSIBLE ENTITY
+    [Documentation]    Test ID: 6.3.5.1.13
+    ...    Test title: POST Create a new vnfInstance - UNPROCESSIBLE ENTITY
+    ...    Test objective: The objective is to test that a new VNF instance resource is not created when 
+    ...    Pre-conditions: none
+    ...    Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v3.3.1
+    ...    Config ID: Config_prod_VE
+    ...    Applicability: vnfdId of the referenced VNF package is not in ENABLED state or does not exist.
+    ...    Post-Conditions: VNF instance created
+    POST Create a new vnfInstance with Invalid vnfdId
+    Check HTTP Response Status Code Is    422
+    Check HTTP Response Body Json Schema Is    ProblemDetails    
\ No newline at end of file
diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot
index e3c3a231..bb432d41 100644
--- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot
+++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot
@@ -93,6 +93,17 @@ POST Create a new vnfInstance
     ${outputResponse}=    Output    response
 	Set Global Variable    ${response}    ${outputResponse} 	
 
+POST Create a new vnfInstance with Invalid vnfdId	
+    Log    Create VNF instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances with invalid vnfdId
+    Set Headers  {"Accept":"${ACCEPT}"}  
+    Set Headers  {"Content-Type": "${CONTENT_TYPE}"}
+    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
+    ${template} =    Get File    jsons/createVnfRequest.json
+    ${body}=        Format String   ${template}     vnfdId=${invalidVnfdId}
+    Post    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances    ${body}
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse} 	
+
 GET multiple vnfInstances	
      Log    Query VNF The GET method queries information about multiple VNF instances.
     Set Headers  {"Accept":"${ACCEPT}"}  
@@ -522,7 +533,179 @@ DELETE Change External VNF Connectivity
     Delete    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_ext_conn  	 	
     ${outputResponse}=    Output    response
 	Set Global Variable    ${response}    ${outputResponse} 
+
+POST Change Current VNF Package Task
+    Log    Trying to change current VNF package task.
+    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/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}"}
+    Get    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+
+PUT Change Current VNF Package Task
+    log    Trying to perform a PUT. This method should not be implemented
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
+    Put    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+
+PATCH Change Current VNF Package Task
+    log    Trying to perform a PATCH. This method should not be implemented
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
+    Patch    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/change_vnfpkg 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+	
+DELETE Change Current VNF Package Task
+    log    Trying to perform a DELETE. 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}/change_vnfpkg 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+
+POST Create VNF Snapshot Task
+    Log    Trying to request a snapshot of a 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/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 NOT SUPPORTED
+    Log    Trying to request a snapshot of a VNF instance for which task resource does not exist
+    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/CreateVnfSnapshotRequest.json
+    ${body}=        Format String   ${template}     vnfSnapshotInfoId=${vnfSnapshotInfoId} 
+    Post    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId_NoSnapshotTask}/create_snapshot    ${body}
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}  
+
+POST Create VNF Snapshot Task VNF_NOT_INSTANTIATED
+    Log    Trying to request a snapshot of a VNF instance which is in NOT_INSTANTIATED state
+    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/CreateVnfSnapshotRequest.json
+    ${body}=        Format String   ${template}     vnfSnapshotInfoId=${vnfSnapshotInfoId} 
+    Post    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId_NOT_INSTANTIATED}/create_snapshot    ${body}
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}  
+	
+POST Create VNF Snapshot Task INVALID IDENTIFIER
+    Log    Trying to request a snapshot of a VNF instance with invalid "Individual VNF Snapshot" resource identifier
+    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/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}  
 	
+GET Create VNF Snapshot 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}"}
+    Get    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+
+PUT Create VNF Snapshot Task
+    log    Trying to perform a PUT. This method should not be implemented
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
+    Put    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+
+PATCH Create VNF Snapshot Task
+    log    Trying to perform a PATCH. This method should not be implemented
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
+    Patch    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/create_snapshot 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+	
+DELETE Create VNF Snapshot Task
+    log    Trying to perform a DELETE. 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}/create_snapshot 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+	
+POST Revert to VNF Snapshot Task
+    Log    Trying to initiate revert to VNF snapshot task.
+    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/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 NOT SUPPORTED
+    Log    Trying to revert to a snapshot of a VNF instance for which task resource does not exist
+    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/RevertToVnfSnapshotRequest.json
+    ${body}=        Format String   ${template}     vnfSnapshotInfoId=${vnfSnapshotInfoId} 
+    Post    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId_NoSnapshotTask}/revert_to_snapshot    ${body}
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}  
+
+POST Revert to VNF Snapshot Task VNF_NOT_INSTANTIATED
+    Log    Trying to revert to a snapshot of a VNF instance which is in NOT_INSTANTIATED state
+    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/RevertToVnfSnapshotRequest.json
+    ${body}=        Format String   ${template}     vnfSnapshotInfoId=${vnfSnapshotInfoId} 
+    Post    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId_NOT_INSTANTIATED}/revert_to_snapshot    ${body}
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}  
+
+GET Revert to VNF Snapshot 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}"}
+    Get    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+
+PUT Revert to VNF Snapshot Task
+    log    Trying to perform a PUT. This method should not be implemented
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
+    Put    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+
+PATCH Revert to VNF Snapshot Task
+    log    Trying to perform a PATCH. This method should not be implemented
+    Run Keyword If    ${AUTH_USAGE} == 1    Set Headers    {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"}
+    Patch    ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/revert_to_snapshot 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+
+DELETE Revert to VNF Snapshot Task
+    log    Trying to perform a DELETE. 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}/revert_to_snapshot 	
+    ${outputResponse}=    Output    response
+	Set Global Variable    ${response}    ${outputResponse}
+
 POST Operate VNF
     Log    Trying to operate a VNF instance.
     Set Headers  {"Accept":"${ACCEPT}"}  
diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt
index 7a8e8c36..a6a16693 100644
--- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt
+++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt
@@ -13,10 +13,12 @@ ${ACCEPT}         application/json
 ${ACCEPT_JSON}         application/json
 ${apiRoot}        /
 ${apiName}        vnflcm
-${apiMajorVersion}    v1
+${apiMajorVersion}    v2
 ${AUTH_USAGE}     1
 ${WRONG_AUTHORIZATION}    Bearer    XXXXXWRONGXXXXX
 ${vnfInstanceId}       6fc3539c-e602-4afa-8e13-962fb5a7d81f
+${vnfInstanceId_NoSnapshotTask}    vnfInstanceIdForWhichSnapshotResourceDoesNotExist
+${vnfInstanceId_NOT_INSTANTIATED}    vnfResourceIsInNOT_INSTANTIATEDstate
 ${badVnfInstanceId}       wrongId
 ${instantiatedVnfInstanceId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f    #Change with an instantiated vnfInstanceID
 ${conflicVnfInstanceId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f
@@ -43,6 +45,9 @@ ${notInstantiatedVnfInstanceId}    NOT_INSTANTIATED_VNF_INSTANCE_ID
 ${NOT_EXISTANT_VNF_INSTANCE_ID}    NOT_EXISTANT_VNF_INSTANCE_ID    
 ${SYNC_MODE}    0
 
+${vnfSnapshotInfoId}
+${invalidVnfSnapshotInfoId}
+
 ${callback_uri}    http://localhost
 ${callback_port}    9091
 ${callback_endpoint}    /endpoint
@@ -64,6 +69,7 @@ ${fields}
 ${original_etag}    some_etag
 
 ${vnfdId}    6fc3539c-e602-4afa-8e13-962fb5a7d81f
+${invalidVnfdId}    vnfdId-in-DISABLED-state-or-DNE
 ${flavourId}    vnf flavour
 
 ${scaleVnfRequesttype}    SCALE_OUT
diff --git a/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json
new file mode 100644
index 00000000..55e7f94c
--- /dev/null
+++ b/SOL002/VNFLifecycleManagement-API/jsons/CreateVnfSnapshotRequest.json
@@ -0,0 +1,3 @@
+{{
+  "vnfSnapshotInfoId": "{vnfSnapshotInfoId}"
+}}
\ No newline at end of file
diff --git a/SOL002/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json
new file mode 100644
index 00000000..014b500d
--- /dev/null
+++ b/SOL002/VNFLifecycleManagement-API/jsons/RevertToVnfSnapshotRequest.json
@@ -0,0 +1,5 @@
+{{
+  "vnfSnapshotInfoId": "{vnfSnapshotInfoId}",
+  "vnfcInstanceId": "",
+  "vnfcSnapshotInfoId": ""
+}}
\ No newline at end of file
diff --git a/SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json
new file mode 100644
index 00000000..c0d7e2a6
--- /dev/null
+++ b/SOL002/VNFLifecycleManagement-API/jsons/changeCurrentVnfPkgRequest.json
@@ -0,0 +1,3 @@
+{{
+  "vnfdId": "{vnfdId}"
+}}
-- 
GitLab