diff --git a/SOL002/VNFConfiguration-API/ApiVersion.robot b/SOL002/VNFConfiguration-API/ApiVersion.robot index 43b857994b0ddd5a49732b2f0be7f2ebb754e860..108cbe0d9ab0665e259bdaec00c8629f78a91083 100644 --- a/SOL002/VNFConfiguration-API/ApiVersion.robot +++ b/SOL002/VNFConfiguration-API/ApiVersion.robot @@ -206,6 +206,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL002/VNFFaultManagement-API/ApiVersion.robot b/SOL002/VNFFaultManagement-API/ApiVersion.robot index 2f4b46c4a94ce8a36fb634459e5aa32e3a6770d2..48a593c977c953340493b591ddb68d6fa5fbb44d 100644 --- a/SOL002/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL002/VNFFaultManagement-API/ApiVersion.robot @@ -208,6 +208,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 3c64348197caca4827ffdfd0cbf6a48b4b7d920d..df7d5d84d7628725fa1a981e40162566bcd0d617 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -22,33 +22,46 @@ Create a new subscription Check HTTP Response Header Contain Link Check Postcondition resource exists -Create a new Subscription - DUPLICATION - [Documentation] Test ID: 6.3.4.4.2 - ... Test title: Create a new Subscription - DUPLICATION - ... Test objective: The objective is to create a duplicate subscription. - ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 - ... Config ID: Config_prod_VNFM - ... Applicability: the VNFM does not allow creation of a subscription resource if another subscription resource with the same filter and callbackUri already exists - ... Post-Conditions: duplicated subscription is created - Post Create subscription - DUPLICATION - Check HTTP Response Status Code Is 201 - Check HTTP Response Body Json Schema Is FmSubscription - Check HTTP Response Header Contain Link - Check Postcondition Duplicate Subscription exsist +# Create a new Subscription - DUPLICATION + # [Documentation] Test ID: 6.3.4.4.2 + # ... Test title: Create a new Subscription - DUPLICATION + # ... Test objective: The objective is to create a duplicate subscription. + # ... Pre-conditions: subscription with the same filter and callbackUri exists + # ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + # ... Config ID: Config_prod_VNFM + # ... Applicability: the VNFM does not allow creation of a subscription resource if another subscription resource with the same filter and callbackUri already exists + # ... Post-Conditions: duplicated subscription is created + # Post Create subscription - DUPLICATION + # Check HTTP Response Status Code Is 201 + # Check HTTP Response Body Json Schema Is FmSubscription + # Check HTTP Response Header Contain Link + # Check Postcondition Duplicate Subscription exsist -Create a new Subscription - NO-DUPLICATION - [Documentation] Test ID: 6.3.4.4.3 - ... Test title: Create a new Subscription - NO-DUPLICATION - ... Test objective: The objective is to create a subscription in case of not allowed DUPLICATION. +# Create a new Subscription - NO-DUPLICATION + # [Documentation] Test ID: 6.3.4.4.3 + # ... Test title: Create a new Subscription - NO-DUPLICATION + # ... Test objective: The objective is to create a subscription in case of not allowed DUPLICATION. + # ... Pre-conditions: subscription with the same filter and callbackUri exists + # ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 + # ... Config ID: Config_prod_VNFM + # ... Applicability: the VNFM does not allow creation of a duplicate subscription resource + # ... Post-Conditions: duplicated subscription is not created + # Post Create subscription - DUPLICATION + # Check HTTP Response Status Code Is 303 + # Check HTTP Response Header Contain Link + +Create a duplicated Subscription + [Documentation] Test ID: 6.3.4.4.2a + ... Test title: Create a duplicated Subscription + ... Test objective: The objective is to create a duplicate subscription. ... Pre-conditions: subscription with the same filter and callbackUri exists ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v2.7.1 ... Config ID: Config_prod_VNFM - ... Applicability: the VNFM does not allow creation of a duplicate subscription resource - ... Post-Conditions: duplicated subscription is not created - Post Create subscription - DUPLICATION - Check HTTP Response Status Code Is 303 - Check HTTP Response Header Contain Link + ... Applicability: + ... Post-Conditions: duplicated subscription is created if the IUT allows duplications, otherwise the duplicated subscription is not created + Post Create subscription + Check Response for duplicated subscription + GET Subscriptions [Documentation] Test ID: 6.3.4.4.4 @@ -307,32 +320,32 @@ Post Create subscription Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/fmSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -Post Create subscription - DUPLICATION - Log Trying to create a subscription with an already created content - Pass Execution If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 0 NVFO is not permitting duplication. Skipping the test - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${template}= Get File jsons/fmSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} -Post Create subscription - NO-DUPLICATION - Log Trying to create a subscription with an already created content - Pass Execution If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 1 VNFM permits duplication. Skipping the test - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${template}= Get File jsons/fmSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} +# Post Create subscription - DUPLICATION + # Log Trying to create a subscription with an already created content + # Pass Execution If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 0 NVFO is not permitting duplication. Skipping the test + # Set Headers {"Accept": "${ACCEPT}"} + # Set Headers {"Content-Type": "${CONTENT_TYPE}"} + # Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + # ${template}= Get File jsons/fmSubscriptionRequest.json + # ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + # Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + # ${outputResponse}= Output response + # Set Global Variable ${response} ${outputResponse} +# Post Create subscription - NO-DUPLICATION + # Log Trying to create a subscription with an already created content + # Pass Execution If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 1 VNFM permits duplication. Skipping the test + # Set Headers {"Accept": "${ACCEPT}"} + # Set Headers {"Content-Type": "${CONTENT_TYPE}"} + # Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + # ${template}= Get File jsons/fmSubscriptionRequest.json + # ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + # Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + # ${outputResponse}= Output response + # Set Global Variable ${response} ${outputResponse} Get subscriptions Log Get the list of active subscriptions Set Headers {"Accept":"${ACCEPT}"} @@ -505,4 +518,9 @@ Check Postcondition resource exists Integer response status 200 Check Postcondition Duplicate Subscription exsist - Should Not Be Equal As Strings ${response['body']['callbackUri']} ${subscriptionId} \ No newline at end of file + Should Not Be Equal As Strings ${response['body']['callbackUri']} ${subscriptionId} + +Check Response for duplicated subscription + Run Keyword If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 1 Check HTTP Response Status Code Is 201 + Run Keyword If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 1 Check HTTP Response Body Json Schema Is FmSubscription + Run Keyword If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 0 Check HTTP Response Status Code Is 303 diff --git a/SOL002/VNFIndicator-API/ApiVersion.robot b/SOL002/VNFIndicator-API/ApiVersion.robot index 9a60cbe3f6e7bf87d4cb68af1f97a19e534adca0..a89c0b19d2ef75bafcdbe50a0103295bd5ce31a7 100644 --- a/SOL002/VNFIndicator-API/ApiVersion.robot +++ b/SOL002/VNFIndicator-API/ApiVersion.robot @@ -208,6 +208,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index d0f7f89dd0874ca8687174d21bcf723619fc39ba..b12f6693f5a045ae43aff0a6b715344c17729dd8 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -207,7 +207,7 @@ Get VNF Indicators Subscriptions with invalid filter Set Suite Variable ${response} ${output} Get VNF Indicators Subscriptions with invalid resource endpoint - Log Trying to perform a request on a Uri which doesn't exist + Log Trying to perform a request on a Uri which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription @@ -219,7 +219,7 @@ Send Post Request for VNF Indicator Subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response diff --git a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot index 2b94beca137636157fa3ffc285100bb0de14283a..1c1ea5db567bf9cb451ab87471fb2f20c2bce428 100644 --- a/SOL002/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL002/VNFLifecycleManagement-API/ApiVersion.robot @@ -206,6 +206,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 826228e151611a8264449da92317d1d5df7d4f57..65aba97b4bad10cd2f363ae8a17f0d6f88e20854 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -37,6 +37,7 @@ GET Information about an individual VNF Instance GET individual vnfInstance 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: 6.3.5.2.3 diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 82ecf4c769cad9467047a46a34974562af02a2bc..cf5882df83b08692e0faa306c4f82693f7163a1a 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -28,7 +28,8 @@ Get status information about multiple VNF instances ... Post-Conditions: none Get Individual VNF LCM OP occurrences Check HTTP Response Status Code Is 200 - Check HTTP Response Body Json Schema Is VnfLcmOpOcc + Check HTTP Response Body Json Schema Is vnfLcmOpOcc + Check HTTP Response Body vnf LCM OpOCC content against VNF Descriptor PUT status information about multiple VNF instances - Method not implemented [Documentation] Test ID: 6.3.5.12.3 diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index f34e1bf9637999f6f7f49cc9b93384b5693a488b..e545c237da69cc5c529b357920481fc8b13948b3 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -17,7 +17,7 @@ POST Scale a vnfInstance ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance + POST Scale vnfInstance 0 Check HTTP Response Status Code Is 202 Check Operation Occurrence Id @@ -30,7 +30,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance + POST Scale vnfInstance 1 Check HTTP Response Status Code Is 409 Check HTTP Response Body Json Schema Is ProblemDetails @@ -43,7 +43,7 @@ POST Scale a vnfInstance Not Found ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none - POST Scale vnfInstance + POST Scale vnfInstance 2 Check HTTP Response Status Code Is 404 Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 9f2f09c01d524536d5346b7151920125166f0858..c2d5451b48b9f482086f4a7f3cb89deb1bf2253d 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -19,6 +19,7 @@ POST Create a new vnfInstance POST Create a new vnfInstance Check HTTP Response Status Code Is 201 Check HTTP Response Body Json Schema Is vnfInstance + Check HTTP Response Body vnfInstance content against VNF Descriptor GET information about multiple VNF instances [Documentation] Test ID: 6.3.5.1.2 @@ -32,8 +33,8 @@ GET information about multiple VNF instances GET multiple vnfInstances Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfInstances + Check HTTP Response Body vnfInstances content against VNF Descriptor - GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters [Documentation] Test ID: 6.3.5.1.3 ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 210784c185588119806048148f0897b4b5257ebe..e7b58946be679101a65bac6ed0056d047380f66b 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -10,6 +10,8 @@ Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ Library String +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** @@ -33,7 +35,7 @@ Check Operation Occurrence Id Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK @@ -75,12 +77,13 @@ Check HTTP Response Header Contains Log Header is present POST Create a new vnfInstance - Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances + Log Create VNF instance by POST to ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template} = Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${vnfdId} + ${body}= Format String ${template} vnfdId=${Descriptor_ID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -202,7 +205,9 @@ PATCH individual vnfInstance Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Set Headers {"If-Match": "${original_etag}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + #Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to VNF Instance ${body}= Get File jsons/patchBodyRequest.json + #${body}= Format String ${template} vnfdId=${descriptor_id} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -252,16 +257,38 @@ DELETE instantiate individual vnfInstance ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -POST Scale vnfInstance + +POST Scale vnfInstance + [Arguments] ${vnf_state} + [Documentation] ${vnf_state} differentiate the VNF ID to be used in the different POST requests + ... ${vnf_state} == 0 -> VNF in instantiated state + ... ${vnf_state} == 1 -> VNF in not_instantiated state + ... ${vnf_state} == 2 -> VNF ID not stored + ... Log Trying to Instantiate a vnf Instance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template}= Get File jsons/scaleVnfRequest.json - ${body}= Format String ${template} scaleVnfRequesttype=${scaleVnfRequesttype} scaleVnfRequestAspect=${scaleVnfRequestAspect} + ${body}= Get File jsons/scaleVnfRequest.json + Run Keyword If ${vnf_state} == 0 Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${instantiatedVnfInstanceId}/scale ${body} + Run Keyword If ${vnf_state} == 1 Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${notInstantiatedVnfInstanceId}/scale ${body} + Run Keyword If ${vnf_state} == 2 Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${NOT_EXISTANT_VNF_INSTANCE_ID}/scale ${body} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${body} - ${outputResponse}= Output response + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/scale ${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}"} + # Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + # ${template}= Get File jsons/scaleVnfRequest.json + # ${body}= Format String ${template} scaleVnfRequesttype=${scaleVnfRequesttype} scaleVnfRequestAspect=${scaleVnfRequestAspect} + # 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}"} @@ -767,7 +794,7 @@ Post Create subscription Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/lccnSubscriptionRequest.json - ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -778,7 +805,7 @@ Post Create subscription - DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/lccnSubscriptionRequest.json - ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -789,7 +816,7 @@ Post Create subscription - NO-DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/lccnSubscriptionRequest.json - ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1015,4 +1042,180 @@ Get VNF LCM Operation occurrences with exclude_fields attribute selector Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link - Should Not Be Empty ${linkURL} \ No newline at end of file + Should Not Be Empty ${linkURL} + +Check HTTP Response Body vnfInstances content against VNF Descriptor + #{check_multiple_instances} flag, set to 1 to check multiple instances against descriptors + Run Keyword If ${check_multiple_instances} == 1 Check Multiple VNF Instances Content + +Check Multiple VNF Instances Content + #${number_of_instances}= Get Length ${response['body']} + #FOR ${i} IN RANGE ${number_of_instances} + ${response['body']}= Get Variable Value ${response['body'][0]} #Gets the first instance at index 0 + Check Individual VNF Instance Content + #END + +Check HTTP Response Body vnfInstance content against VNF Descriptor + #${check_descriptors} flag, 1 to check descriptors + Run Keyword If ${check_descriptors} == 1 Check Individual VNF Instance Content + +Check Individual VNF Instance Content + PARSE the Descriptor File + Match the VNF Instance Response Attributes with Descriptors + +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file + +Fetch Information from SOL001 descriptor file + @{VDU_labels}= Create List + @{VNF_labels}= Create List + @{VirtualLink_labels}= Create List + @{CP_labels}= Create List + @{Storage_labels}= Create List + FOR ${key} IN @{topology_template.node_templates.keys()} + ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VDU_compute} + ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} + ${Link_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_virtual_link} + ${VDUcp_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VDU_cp} + ${Storage_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_storage} + Run Keyword If ${VDU_check} Append To List ${VDU_labels} ${key} + Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} + Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} + Run Keyword If ${Link_check} Append To List ${VirtualLink_labels} ${key} + Run Keyword If ${VDUcp_check} Append To List ${CP_labels} ${key} + Run Keyword If ${Storage_check} Append To List ${Storage_labels} ${key} + END + Set Global Variable @{VDU_IDs} @{VDU_labels} + Set Global Variable @{VNF_IDs} @{VNF_labels} + Set Global Variable @{VirtualLink_IDs} @{VirtualLink_labels} + Set Global Variable @{CP_IDs} @{CP_labels} + Set Global Variable @{Storage_IDs} @{Storage_labels} + +Get VNF Attributes from SOL001 + [Arguments] ${VNF_label} + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.descriptor_version} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.flavour_id} + + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + Set Global Variable ${Flavour_ID} ${flavour_id} + +Fetch Information from SOL006 descriptor file + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0]['product-name']} + ${software_version}= Get Variable Value ${nfv.vnfd[0]['software-version']} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + ${VDUcount}= Get Length ${nfv.vnfd[0].vdu} + ${extCP_count}= Get Length ${nfv.vnfd[0]['ext-cpd']} + ${virtualLink_count}= Get length ${nfv.vnfd[0]['int-virtual-link-desc']} + ${instantiation_levels}= Get Length ${nfv.vnfd[0].df['instantiation-level']} + FOR ${key} IN @{nfv.vnfd[0].keys()} + ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vdu + Run Keyword If ${VDU_check} Get VDU IDs ${VDUcount} + ${extCP_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} ext-cpd + Run Keyword If ${extCP_check} Get External CP IDs ${extCP_count} + ${virtualLink_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} int-virtual-link-desc + Run Keyword If ${virtualLink_check} Get Virtual Link IDs ${virtualLink_count} + ${DF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} df + Run Keyword If ${DF_check} Get Instantiation Levels ${instantiation_levels} + END + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + +Get VDU IDs + [Arguments] ${count} + @{VDU_labels}= Create List + ${Storage_labels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${VDU_labels} ${nfv.vnfd[0].vdu[${i}]['id']} + Append To List ${Storage_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-storage-desc']} + Get Internal CPs for each VDU ${i} + END + Set Global Variable ${VDU_IDs} ${VDU_labels} + Set Global Variable ${Storage_IDs} ${Storage_labels} + +Get Internal CPs for each VDU + [Arguments] ${vdu} + ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}]['int-cpd']} + ${internal_CPs}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${internal_CPs} ${nfv.vnfd[0].vdu[${vdu}]['int-cpd'][${i}]['id']} + END + Set Global Variable ${internalCP_IDs} ${internal_CPs} + +Get External CP IDs + [Arguments] ${count} + @{external_CPs}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${external_CPs} ${nfv.vnfd[0]['ext-cpd'][${i}]['id']} + END + Set Global Variable ${externalCP_IDs} ${external_CPs} + +Get Virtual Link IDs + [Arguments] ${count} + ${VirtualLink_labels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${VirtualLink_labels} ${nfv.vnfd[0]['int-virtual-link-desc'][${i}]['id']} + END + Set Global Variable ${VirtualLink_IDs} ${VirtualLink_labels} + +Get Instantiation Levels + [Arguments] ${count} + @{Instantiation_Levels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df['instantiation-level'][${i}]['id']} + END + Set Global Variable ${InstantiationLevel_IDs} ${Instantiation_Levels} + +Match the VNF Instance Response Attributes with Descriptors + #Checking Response attributes with VNF Descriptors + Should Be Equal As Strings ${response['body']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['vnfSoftwareVersion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${Descriptor_Version} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} + List Should Contain Value ${VDU_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo'][0]['vduId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo'][0]['vnfcCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo'][0]['vnfcCpInfo'][0]['cpdId']} + List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo'][0]['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo'][0]['vnfVirtualLinkDescId']} + +Check HTTP Response Body vnf LCM OpOCCs content against VNF Descriptor + #{check_multiple_instances} flag, set to 1 to check multiple instances against descriptors + Run Keyword If ${check_multiple_instances} == 1 Check Multiple VNF LCM OpOCCs Content + +Check Multiple VNF LCM OpOCCs Content + #${number_of_instances}= Get Length ${response['body']} + #FOR ${i} IN RANGE ${number_of_instances} + ${response['body']}= Get Variable Value ${response['body'][0]} #Gets the first instance at index 0 + Check Individual VNF LCM Operation Occurence Content + #END + +Check HTTP Response Body vnf LCM OpOCC content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual VNF LCM Operation Occurence Content + +Check Individual VNF LCM Operation Occurence Content + PARSE the Descriptor File + Match the VNF LCM Operation Occurence Response Attributes with Descriptors + +Match the VNF LCM Operation Occurence Response Attributes with Descriptors + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${Descriptor_Version} + List Should Contain Value ${VDU_IDs} ${response['body']['resourceChanges']['affectedVnfcs'][0]['vduId']} + List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages'][0]['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks'][0]['vnfVirtualLinkDescId']} diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 687c6f711297dc2fcabc2c85fdf4b46ffa9e24ea..d5e329d38cffd74f715d7c4069053150b5e5ece2 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -32,7 +32,8 @@ GET status information about multiple VNF LCM operation occurrences GET VNF LCM OP occurrences Check HTTP Response Status Code Is 202 Check HTTP Response Body Json Schema Is VnfLcmOpOccs - + Check HTTP Response Body vnf LCM OpOCCs content against VNF Descriptor + GET status information about multiple VNF LCM operation occurrences Bad Request Invalid attribute-based filtering parameters [Documentation] Test ID: 6.3.5.11.3 ... Test title: GET status information about multiple VNF LCM operation occurrences Bad Request Invalid attribute-based filtering parameters diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e9159106a9469826fc1afbdc1bcba43ebc86f61a --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -0,0 +1,168 @@ +tosca_definitions_version: tosca_simple_yaml_1_2 +description: "TST010 reference VNF-B" +metadata: + descriptor_id: "VNF-B" + vendor: "ETSI TST WG" + version: "2.0" +topology_template: + substitution_mappings: + node_type: "tosca.nodes.nfv.VNF" + requirements: + virtual_link_management: + [management, virtual_link_management] + virtual_link_left: + [left, virtual_link_left] + virtual_link_right: + [right, virtual_link_right] + node_templates: + right: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 1 + requirements: + virtual_link_right: + virtual_binding: VDU-B-2 + management: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 0 + requirements: + virtual_link_management: + virtual_binding: VDU-B-1 + left: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 2 + requirements: + virtual_link_left: + virtual_binding: VDU-B-1 + internal_vl: + type: "tosca.nodes.nfv.VnfVirtualLink" + properties: + connectivity_type: + layer_protocols: [ ipv4 ] + description: Internal Virtual link in the VNF + vl_profile: + max_bitrate_requirements: + root: 100000 + leaf: 20000 + min_bitrate_requirements: + root: 10000 + leaf: 10000 + internal_vdu_b_1_cp: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 2 + requirements: + - virtual_binding: VDU-B-1 + - virtual_link: internal_vl + internal_vdu_b_2_cp: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 0 + requirements: + - virtual_binding: VDU-B-2 + - virtual_link: internal_vl + vdu_b_1_vsd: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-1 image" + version: "1.1" + checksum: + algorithm: "sha-224" + hash: "somehashfortst010" + container_format: "bare" + disk-format: qcow2 + min-disk: '1' + min-ram: '2' + size: '1' + artifacts: + sw_image: + type: "tosca.artifacts.nfv.SwImage" + file: vdu-b-1.qcow2 + vdu_b_2_vsd: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-2 image" + version: "1.1" + checksum: + algorithm: "sha-224" + hash: "somehashfortst010" + container_format: "bare" + disk-format: qcow2 + min-disk: '1' + min-ram: '2' + size: '1' + artifacts: + sw_image: + type: tosca.artifacts.nfv.SwImage + file: vdu-b-2.qcow2 + vnf_b_1_VNF: + type: "tosca.nodes.nfv.VNF" + properties: + descriptor_id: "VNF-B-2VDUs" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VNF-B-2VDUs" + software_version: "2.0" + product_info_name: "VNF-B-2VDUs" + product_info_description: "TST010 reference VNF-B with 2 VDUs" + flavour_id: "VNF-B-2VDU_flavor" + flavour_description: "VNF-B with 2 VDUs flavor" + vnfm_info: + etsivnfm: + - v2.3.1 + interfaces: + Vnflcm: + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml + VDU_B_1: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-1-vcd" + descriptor: "Description of VDU-B-1" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 2 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 + numa_enabled: false + virtual_cpu: + num_virtual_cpu: 2 + requirements: + virtual_storage: + - "vdu-b-1-vsd" + VDU_B_2: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-2-vcd" + descriptor: "Description of VDU-B-2" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 4 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 6144 + numa_enabled: false + virtual_cpu: + num_virtual_cpu: 2 + requirements: + virtual_storage: + - "vdu-b-2-vsd" \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d902779a2d42d34a9f93513512d8a485dc1d838b --- /dev/null +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @@ -0,0 +1,137 @@ +nfv: + vnfd: + - id: VNF-B-2vdu + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 VDUs + software-version: '2.2' + version: '2.2' + vnfm-info: ETSI VNFM + vdu: + - id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + - id: vdu-b-2 + name: VNF-B VDU 2 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-2-vcd + virtual-storage-desc: vdu-b-2-vsd + sw-image-desc: vdu-b-2-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + virtual-compute-desc: + id: vdu-b-2-vcd + virtual-memory: + size: '6.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-2-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-2-image + name: VNF-B-2 image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B-2.qcow2' + int-virtual-link-desc: + - id: internal-vl + flavour: + id: internal-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.05' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-2 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + - id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + - id: vdu-b-2 + min-number-of-instances: '1' + max-number-of-instances: '4' + instantiation-level: + - id: double + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '2' + - vdu-id: vdu-b-2 + number-of-instances: '2' + - id: single + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '1' + - vdu-id: vdu-b-2 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index 29e211d279ccbe6cf5e1964e209d36dc8e5e860e..9bc19c2876c18e6cbb95367214a148ee32230565 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -38,7 +38,8 @@ ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f ${VnfLcmOperationOccurrenceNotification} {} ${VnfIdentifierCreationNotification} {} ${VnfIdentifierDeletionNotification} {} - +${notInstantiatedVnfInstanceId} NOT_INSTANTIATED_VNF_INSTANCE_ID +${NOT_EXISTANT_VNF_INSTANCE_ID} NOT_EXISTANT_VNF_INSTANCE_ID ${SYNC_MODE} 0 ${callback_uri} http://localhost @@ -77,4 +78,30 @@ ${changeStateTo} STOPPED ${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -${callbackResp} localhost \ No newline at end of file +${callbackResp} localhost + +${check_descriptors} 1 +${descriptorType} SOL006 +${check_multiple_instances} 0 + +${tosca_type_VDU_compute} tosca.nodes.nfv.Vdu.Compute +${tosca_type_VNF} tosca.nodes.nfv.VNF +${tosca_type_virtual_link} tosca.nodes.nfv.VnfVirtualLink +${tosca_type_VDU_cp} tosca.nodes.nfv.VduCp +${tosca_type_storage} tosca.nodes.nfv.Vdu.VirtualBlockStorage + +@{VDU_IDs} +@{VNF_IDs} +@{virtualLink_IDs} +@{CP_IDs} +@{Storage_IDs} +@{internalCP_IDs} +@{externalCP_IDs} +@{InstantiationLevel_IDs} + +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} +${Flavour_ID} diff --git a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 5c9c30a259dc1bc272001a61a6eef3645f94822e..5b1a730e38caedfd0066b52b6ef83b06d5f72ea0 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,5 +1,5 @@ {{ - "vnfdId": "${vnfdId}", "vnfInstanceName": "string", - "vnfInstanceDescription": "string" -}} \ No newline at end of file + "vnfInstanceDescription": "string", + "vnfdId": "{vnfdId}" +}} diff --git a/SOL002/VNFLifecycleManagement-API/jsons/patchBodyRequest.json b/SOL002/VNFLifecycleManagement-API/jsons/patchBodyRequest.json index 0c8845c218393245163304406c1ef2556b4472fd..7741920212df3063ed297dba4fd1e008928f1ffd 100644 --- a/SOL002/VNFLifecycleManagement-API/jsons/patchBodyRequest.json +++ b/SOL002/VNFLifecycleManagement-API/jsons/patchBodyRequest.json @@ -1,4 +1,5 @@ { "vnfInstanceName": "vnf new name", - "vnfInstanceDescription": "new description" + "vnfInstanceDescription": "new description", + "vnfdId": "" } \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot index 168033e8d543cae0b8b01e36c75aae15ec7d9318..0e98a839675237e464331b4b0116d13b56d66da5 100644 --- a/SOL002/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL002/VNFPerformanceManagement-API/ApiVersion.robot @@ -206,6 +206,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 160d126427f6888df05b0e05783fd2d9133eeb12..1c7dc8e97141fa336dd300e33108f817da233b99 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -285,7 +285,7 @@ Send Post Request Create new VNF Performance Monitoring Job Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/CreatePmJobRequest.json - ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri} + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri}:${callback_port} POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index 5ed05061c0359e241c71fa503a81cd0bc016b168..7505e15f2c3d31ba138dd298bbe8e22636954a7e 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -176,7 +176,7 @@ Send Post Request Create new Performance Threshold Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/CreateThresholdRequest.json - ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri} + ${body}= Format String ${template} objectInstanceIds=${objectInstanceIds} callback_uri=${callback_uri}:${callback_port} POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${body} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFFaultManagement-API/ApiVersion.robot b/SOL003/VNFFaultManagement-API/ApiVersion.robot index 943898e57c6d15e285ea5fda1760b13630d28e15..b265a9a56fafaace854e7e3308c77821b30eae9f 100644 --- a/SOL003/VNFFaultManagement-API/ApiVersion.robot +++ b/SOL003/VNFFaultManagement-API/ApiVersion.robot @@ -208,6 +208,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot index 1f9b5e86ea2214b7a77b7d819f0c45e7d65eb8f0..b833c935478b792b47eae18e374d2b4511b96b15 100644 --- a/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot +++ b/SOL003/VNFFaultManagement-API/FaultManagement-APIKeyword.robot @@ -60,7 +60,7 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK @@ -256,7 +256,7 @@ POST Subscription Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/fmSubscriptionRequest.json - ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -268,7 +268,7 @@ Send POST Request for duplicated subscription Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/fmSubscriptionRequest.json - ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -280,7 +280,7 @@ Send POST Request for duplicated subscription not permitted Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/fmSubscriptionRequest.json - ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + ${body}= Format String ${template} vnfdIds=${vnfdIds} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VNFFaultManagement-API/environment/variables.txt b/SOL003/VNFFaultManagement-API/environment/variables.txt index 5908e8e4a19fb2377454a78baa408d4fddc85d0b..8f264481e50b8ab3ffd3d6fc692e449baf259078 100644 --- a/SOL003/VNFFaultManagement-API/environment/variables.txt +++ b/SOL003/VNFFaultManagement-API/environment/variables.txt @@ -52,6 +52,7 @@ ${invalidAlarmId} invalidIdAlarm ${fields} criteria,objectInstanceIds ${callback_uri} http://127.0.0.1 +${callback_port} 9091 ${callback_endpoint} /subscribe ${vnfdIds} 6fc3539c-e602-4afa-8e13-962fb5a7d81f diff --git a/SOL003/VNFIndicator-API/ApiVersion.robot b/SOL003/VNFIndicator-API/ApiVersion.robot index bcb0549b0dc601854e14a61c7fe44ff4328763b8..4c8aa20c19c459b8de13eea05751cc9234b1403a 100644 --- a/SOL003/VNFIndicator-API/ApiVersion.robot +++ b/SOL003/VNFIndicator-API/ApiVersion.robot @@ -208,6 +208,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot index 46cba71ddbe1b91018284b189b482e5053fabb62..e19b65ac98d57e3751241a03251d4b6ab1672c7d 100644 --- a/SOL003/VNFLifecycleManagement-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleManagement-API/ApiVersion.robot @@ -207,6 +207,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot index cca928c20d04bffee93d88854ceaf5fd547c70d0..cca0474cbb4e2e22e81136c5a091dd389584a8c9 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -35,6 +35,7 @@ Get Information about an individual VNF Instance GET individual vnfInstance 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 diff --git a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 5722c62a9dda13487bd62338fc3fa5334ce8857d..85bc89adc46f71cb9563bc30cd8a1c7b5cdf4433 100644 --- a/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL003/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -30,6 +30,7 @@ Get Individual VNF LCM Operation occurrences Get Individual VNF LCM Operation occurrences 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 PUT Individual VNF LCM Operation occurrences - Method not implemented [Documentation] Test ID: 7.3.1.12.3 diff --git a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot index 8544fc162525ba96443c6ca0179374efabf92e50..bf4db381d3cce20eb4be062527cae3f5b24ce359 100644 --- a/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RetryOperationWorkflow.robot @@ -21,8 +21,6 @@ Retry VNF LCM Operation - Successful ... Post-Conditions: The VNF lifecycle management operation occurrence is in COMPLETED state Send Retry Operation Request Check HTTP Response Status Code Is 202 - Check HTTP Response Header Contains Location - Check Operation Occurrence Id existence Check Operation Notification For Retry PROCESSING Check Operation Notification For Retry COMPLETED Check Postcondition VNF Retry Successful @@ -38,8 +36,6 @@ Retry VNF LCM Operation - Unsuccessful ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state Send Retry Operation Request Check HTTP Response Status Code Is 202 - Check HTTP Response Header Contains Location - Check Operation Occurrence Id existence Check Operation Notification For Retry PROCESSING Check Operation Notification For Retry FAILED_TEMP Check Postcondition VNF Retry Unsuccessful diff --git a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot index f401cc09496d755976efac41e8d9e3e3aeb482b8..3e42be057e6a23f40d775365a56d26a1dc553349 100644 --- a/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot +++ b/SOL003/VNFLifecycleManagement-API/RollBackOperationWorkflow.robot @@ -23,8 +23,6 @@ Rollback a VNF LCM Operation - Successful ... Post-Conditions: The VNF lifecycle management operation occurrence is in ROLLED_BACK state Send Roll back Operation Request Check HTTP Response Status Code Is 202 - Check HTTP Response Header Contains Location - Check Operation Occurrence Id existence Check Operation Notification For Roll Back ROLLING_BACK Check Operation Notification For Roll Back ROLLED_BACK Check Postcondition VNF Roll Back Successful @@ -40,8 +38,6 @@ Rollback VNF LCM Operation - Unsuccessful ... Post-Conditions: The VNF lifecycle management operation occurrence is in FAILED_TEMP state Send Roll back Operation Request Check HTTP Response Status Code Is 202 - Check HTTP Response Header Contains Location - Check Operation Occurrence Id existence Check Operation Notification For Roll Back ROLLING_BACK Check Operation Notification For Roll Back FAILED_TEMP Check Postcondition VNF Roll Back UnSuccessful diff --git a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot index f01d3b2d942b2fb8a20fba412bf67faa43e0983b..39ff4a627acaaa440c560f3387c6686c86e9ea4f 100644 --- a/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot +++ b/SOL003/VNFLifecycleManagement-API/VnfLcmMntOperationKeywords.robot @@ -8,6 +8,8 @@ Library BuiltIn Library JSONLibrary Library Collections Library JSONSchemaLibrary schemas/ +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** Get Vnf Instance @@ -123,7 +125,9 @@ Send VNF Instance Resource Create Request Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/createVnfRequest.json + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + ${template}= Get File jsons/createVnfRequest.json + ${body}= Format String ${template} vnfdId=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersion= ${Descriptor_Version} flavourId=${Flavour_ID} ${response}= Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} Send VNF Instance Resource Delete Request @@ -322,11 +326,13 @@ POST Change VNF deployment flavour Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/changeVnfFlavourRequest.json - ${body}= Format String ${template} newFlavourId=${newFlavourId} + ${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} + 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":"${AUTHORIZATION}"} @@ -360,8 +366,9 @@ POST Create a new vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/createVnfRequest.json - ${body}= Format String ${template} vnfdId=${vnfdId} + ${body}= Format String ${template} vnfdId=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersion= ${Descriptor_Version} Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -491,10 +498,13 @@ PATCH individual vnfInstance Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE_PATCH}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${body}= Get File jsons/patchBodyRequest.json + Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File + ${template}= Get File jsons/patchBodyRequest.json + ${body}= Format String ${template} vnfdId=${Descriptor_ID} vnfdVersion= ${Descriptor_Version} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId} ${body} ${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":"${AUTHORIZATION}"} @@ -974,7 +984,7 @@ Post Create subscription Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/lccnSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_notification=${callback_notification} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_notification=${callback_notification} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -985,7 +995,7 @@ Post Create subscription - DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/lccnSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_notification=${callback_notification} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_notification=${callback_notification} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -996,7 +1006,7 @@ Post Create subscription - NO-DUPLICATION Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/lccnSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_notification=${callback_notification} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_notification=${callback_notification} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -1180,3 +1190,160 @@ GET test endpoint Check HTTP Response Header Contain Link ${linkURL}= Get Value From Json ${response['headers']} $..Link Should Not Be Empty ${linkURL} + +Check HTTP Response Body vnfInstance content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual VNF Instance Content + +Check Individual VNF Instance Content + PARSE the Descriptor File + Match the VNF Instance Response Attributes with Descriptors + +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file + +Fetch Information from SOL001 descriptor file + @{VDU_labels}= Create List + @{VNF_labels}= Create List + @{VirtualLink_labels}= Create List + @{CP_labels}= Create List + @{Storage_labels}= Create List + FOR ${key} IN @{topology_template.node_templates.keys()} + ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VDU_compute} + ${VNF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VNF} + ${Link_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_virtual_link} + ${VDUcp_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VDU_cp} + ${Storage_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_storage} + Run Keyword If ${VDU_check} Append To List ${VDU_labels} ${key} + Run Keyword If ${VNF_check} Append To List ${VNF_labels} ${key} + Run Keyword If ${VNF_check} Get VNF Attributes from SOL001 ${key} + Run Keyword If ${Link_check} Append To List ${VirtualLink_labels} ${key} + Run Keyword If ${VDUcp_check} Append To List ${CP_labels} ${key} + Run Keyword If ${Storage_check} Append To List ${Storage_labels} ${key} + END + Set Global Variable @{VDU_IDs} @{VDU_labels} + Set Global Variable @{VNF_IDs} @{VNF_labels} + Set Global Variable @{VirtualLink_IDs} @{VirtualLink_labels} + Set Global Variable @{CP_IDs} @{CP_labels} + Set Global Variable @{Storage_IDs} @{Storage_labels} + +Get VNF Attributes from SOL001 + [Arguments] ${VNF_label} + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.descriptor_version} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.${VNF_label}.properties.flavour_id} + + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + Set Global Variable ${Flavour_ID} ${flavour_id} + + +Fetch Information from SOL006 descriptor file + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0]['product-name']} + ${software_version}= Get Variable Value ${nfv.vnfd[0]['software-version']} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + ${VDUcount}= Get Length ${nfv.vnfd[0].vdu} + ${extCP_count}= Get Length ${nfv.vnfd[0]['ext-cpd']} + ${virtualLink_count}= Get length ${nfv.vnfd[0]['int-virtual-link-desc']} + ${instantiation_levels}= Get Length ${nfv.vnfd[0].df['instantiation-level']} + FOR ${key} IN @{nfv.vnfd[0].keys()} + ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vdu + Run Keyword If ${VDU_check} Get VDU IDs ${VDUcount} + ${extCP_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} ext-cpd + Run Keyword If ${extCP_check} Get External CP IDs ${extCP_count} + ${virtualLink_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} int-virtual-link-desc + Run Keyword If ${virtualLink_check} Get Virtual Link IDs ${virtualLink_count} + ${DF_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} df + Run Keyword If ${DF_check} Get Instantiation Levels ${instantiation_levels} + END + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + +Get VDU IDs + [Arguments] ${count} + @{VDU_labels}= Create List + ${Storage_labels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${VDU_labels} ${nfv.vnfd[0].vdu[${i}]['id']} + Append To List ${Storage_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-storage-desc']} + Get Internal CPs for each VDU ${i} + END + Set Global Variable ${VDU_IDs} ${VDU_labels} + Set Global Variable ${Storage_IDs} ${Storage_labels} + +Get Internal CPs for each VDU + [Arguments] ${vdu} + ${count}= Get Length ${nfv.vnfd[0].vdu[${vdu}]['int-cpd']} + ${internal_CPs}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${internal_CPs} ${nfv.vnfd[0].vdu[${vdu}]['int-cpd'][${i}]['id']} + END + Set Global Variable ${internalCP_IDs} ${internal_CPs} + +Get External CP IDs + [Arguments] ${count} + @{external_CPs}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${external_CPs} ${nfv.vnfd[0].ext_cpd[${i}].id} + END + Set Global Variable ${externalCP_IDs} ${external_CPs} + +Get Virtual Link IDs + [Arguments] ${count} + ${VirtualLink_labels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${VirtualLink_labels} ${nfv.vnfd[0]['int-virtual-link-desc'][${i}]['id']} + END + Set Global Variable ${VirtualLink_IDs} ${VirtualLink_labels} + +Get Instantiation Levels + [Arguments] ${count} + @{Instantiation_Levels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${Instantiation_Levels} ${nfv.vnfd[0].df['instantiation-level'][${i}]['id']} + END + Set Global Variable ${InstantiationLevel_IDs} ${Instantiation_Levels} + +Match the VNF Instance Response Attributes with Descriptors + #Checking Response attributes with VNF Descriptors + Should Be Equal As Strings ${response['body']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['vnfSoftwareVersion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${Descriptor_Version} + Should Be Equal As Strings ${response['body']['instantiatedVnfInfo']['flavourId']} ${Flavour_ID} + List Should Contain Value ${VDU_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo']['vduId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${internalCP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo'][0]['vnfcCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['extCpInfo'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['instantiatedVnfInfo']['vnfcResourceInfo'][0]['vnfcCpInfo'][0]['cpdId']} + List Should Contain value ${Storage_IDs} ${response['body']['instantiatedVnfInfo']['virtualStorageResourceInfo'][0]['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['instantiatedVnfInfo']['extManagedVirtualLinkInfo'][0]['vnfVirtualLinkDescId']} + +Check HTTP Response Body of Individual VNF LCM Operation occurrences content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual VNF LCM Operation Occurence Content + +Check Individual VNF LCM Operation Occurence Content + PARSE the Descriptor File + Match the VNF LCM Operation Occurence Response Attributes with Descriptors + +Match the VNF LCM Operation Occurence Response Attributes with Descriptors + #Checking Response attributes with VNF Descriptors + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['changedInfo']['vnfdVersion']} ${Descriptor_Version} + List Should Contain Value ${VDU_IDs} ${response['body']['resourceChanges']['affectedVnfcs'][0]['vduId']} + List Should Contain value ${Storage_IDs} ${response['body']['resourceChanges']['affectedVirtualStorages'][0]['virtualStorageDescId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['resourceChanges']['affectedVirtualLinks'][0]['virtualStorageDescId']} + + \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e9159106a9469826fc1afbdc1bcba43ebc86f61a --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -0,0 +1,168 @@ +tosca_definitions_version: tosca_simple_yaml_1_2 +description: "TST010 reference VNF-B" +metadata: + descriptor_id: "VNF-B" + vendor: "ETSI TST WG" + version: "2.0" +topology_template: + substitution_mappings: + node_type: "tosca.nodes.nfv.VNF" + requirements: + virtual_link_management: + [management, virtual_link_management] + virtual_link_left: + [left, virtual_link_left] + virtual_link_right: + [right, virtual_link_right] + node_templates: + right: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 1 + requirements: + virtual_link_right: + virtual_binding: VDU-B-2 + management: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 0 + requirements: + virtual_link_management: + virtual_binding: VDU-B-1 + left: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 2 + requirements: + virtual_link_left: + virtual_binding: VDU-B-1 + internal_vl: + type: "tosca.nodes.nfv.VnfVirtualLink" + properties: + connectivity_type: + layer_protocols: [ ipv4 ] + description: Internal Virtual link in the VNF + vl_profile: + max_bitrate_requirements: + root: 100000 + leaf: 20000 + min_bitrate_requirements: + root: 10000 + leaf: 10000 + internal_vdu_b_1_cp: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 2 + requirements: + - virtual_binding: VDU-B-1 + - virtual_link: internal_vl + internal_vdu_b_2_cp: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 0 + requirements: + - virtual_binding: VDU-B-2 + - virtual_link: internal_vl + vdu_b_1_vsd: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-1 image" + version: "1.1" + checksum: + algorithm: "sha-224" + hash: "somehashfortst010" + container_format: "bare" + disk-format: qcow2 + min-disk: '1' + min-ram: '2' + size: '1' + artifacts: + sw_image: + type: "tosca.artifacts.nfv.SwImage" + file: vdu-b-1.qcow2 + vdu_b_2_vsd: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-2 image" + version: "1.1" + checksum: + algorithm: "sha-224" + hash: "somehashfortst010" + container_format: "bare" + disk-format: qcow2 + min-disk: '1' + min-ram: '2' + size: '1' + artifacts: + sw_image: + type: tosca.artifacts.nfv.SwImage + file: vdu-b-2.qcow2 + vnf_b_1_VNF: + type: "tosca.nodes.nfv.VNF" + properties: + descriptor_id: "VNF-B-2VDUs" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VNF-B-2VDUs" + software_version: "2.0" + product_info_name: "VNF-B-2VDUs" + product_info_description: "TST010 reference VNF-B with 2 VDUs" + flavour_id: "VNF-B-2VDU_flavor" + flavour_description: "VNF-B with 2 VDUs flavor" + vnfm_info: + etsivnfm: + - v2.3.1 + interfaces: + Vnflcm: + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml + VDU_B_1: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-1-vcd" + descriptor: "Description of VDU-B-1" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 2 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 + numa_enabled: false + virtual_cpu: + num_virtual_cpu: 2 + requirements: + virtual_storage: + - "vdu-b-1-vsd" + VDU_B_2: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-2-vcd" + descriptor: "Description of VDU-B-2" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 4 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 6144 + numa_enabled: false + virtual_cpu: + num_virtual_cpu: 2 + requirements: + virtual_storage: + - "vdu-b-2-vsd" \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d902779a2d42d34a9f93513512d8a485dc1d838b --- /dev/null +++ b/SOL003/VNFLifecycleManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @@ -0,0 +1,137 @@ +nfv: + vnfd: + - id: VNF-B-2vdu + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 VDUs + software-version: '2.2' + version: '2.2' + vnfm-info: ETSI VNFM + vdu: + - id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + - id: vdu-b-2 + name: VNF-B VDU 2 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-2-vcd + virtual-storage-desc: vdu-b-2-vsd + sw-image-desc: vdu-b-2-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + virtual-compute-desc: + id: vdu-b-2-vcd + virtual-memory: + size: '6.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-2-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-2-image + name: VNF-B-2 image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B-2.qcow2' + int-virtual-link-desc: + - id: internal-vl + flavour: + id: internal-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.05' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-2 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + - id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + - id: vdu-b-2 + min-number-of-instances: '1' + max-number-of-instances: '4' + instantiation-level: + - id: double + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '2' + - vdu-id: vdu-b-2 + number-of-instances: '2' + - id: single + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '1' + - vdu-id: vdu-b-2 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/environment/variables.txt b/SOL003/VNFLifecycleManagement-API/environment/variables.txt index b08bdeff5a1ca5c2ba645ecebfd1348118370f90..9d110b13abe439add8fed75525b9f4fb8a2d6eda 100644 --- a/SOL003/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL003/VNFLifecycleManagement-API/environment/variables.txt @@ -97,4 +97,29 @@ ${element} ${aspectId} ${scaleOutResponse} -${callbackResp} localhost \ No newline at end of file +${callbackResp} localhost + +${descriptorType} SOL001 +${check_descriptors} 1 + +${tosca_type_VDU_compute} tosca.nodes.nfv.Vdu.Compute +${tosca_type_VNF} tosca.nodes.nfv.VNF +${tosca_type_virtual_link} tosca.nodes.nfv.VnfVirtualLink +${tosca_type_VDU_cp} tosca.nodes.nfv.VduCp +${tosca_type_storage} tosca.nodes.nfv.Vdu.VirtualBlockStorage + +@{VDU_IDs} +@{VNF_IDs} +@{virtualLink_IDs} +@{CP_IDs} +@{Storage_IDs} +@{internalCP_IDs} +@{externalCP_IDs} +@{InstantiationLevel_IDs} + +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} +${Flavour_ID} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json index 64ab8e55c3213ff0553dd3325e07b7384eddb07e..15a5f7f7d55b743b4ec3d2284656960023d6b7f4 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/createVnfRequest.json @@ -1,6 +1,9 @@ {{ - "vnfdId": "{vnfdId}", "vnfInstanceName": "string", "vnfInstanceDescription": "string", - "metadata":{{}} + "vnfdId": "{vnfdId}", + "vnfProvider":"{vnfProvider}", + "vnfProductName":"{vnfProductName}", + "vnfSoftwareVersion":"{vnfSoftwareVersion}", + "vnfdVersion":"{vnfdVersion}" }} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/jsons/patchBodyRequest.json b/SOL003/VNFLifecycleManagement-API/jsons/patchBodyRequest.json index 0c8845c218393245163304406c1ef2556b4472fd..679cc4c7f673d5b02f730c67dd9679735cbb41f2 100644 --- a/SOL003/VNFLifecycleManagement-API/jsons/patchBodyRequest.json +++ b/SOL003/VNFLifecycleManagement-API/jsons/patchBodyRequest.json @@ -1,4 +1,7 @@ -{ - "vnfInstanceName": "vnf new name", - "vnfInstanceDescription": "new description" -} \ No newline at end of file +{{ + "vnfInstanceName": "vnf string", + "vnfInstanceDescription": "string", + "vnfdId": "{vnfdId}", + "vnfdVersion":"{vnfdVersion}", + "metadata":{{}} +}} \ No newline at end of file diff --git a/SOL003/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json similarity index 100% rename from SOL003/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json rename to SOL003/VNFLifecycleManagement-API/schemas/VnfLcmOpOcc.schema.json diff --git a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index fefb142da9f905120ff32246f73e6b88062978d5..75ab7eb899910a4119074e104c15378b8586c851 100644 --- a/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL003/VNFLifecycleManagement-API/schemas/subscriptions.schema.json @@ -1 +1,148 @@ -{ "type": "array", "items": { "description": "This type represents a subscription.\n", "type": "object", "required": [ "id", "callbackUri", "_links" ], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "filter": { "description": "This type represents a filter that can be used to subscribe for notifications related to performance management events.\n", "type": "object", "properties": { "vnfInstanceSubscriptionFilter": { "description": "This type represents subscription filter criteria to match VNF instances.\n", "type": "object", "properties": { "vnfdIds": { "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" } }, "vnfProductsFromProviders": { "description": "If present, match VNF instances that belong to VNF products from certain providers. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", "type": "array", "items": { "type": "object", "required": [ "vnfProvider" ], "properties": { "vnfProvider": { "description": "Name of the VNF provider to match.\n", "type": "string" }, "vnfProducts": { "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n", "type": "array", "items": { "type": "object", "required": [ "vnfProductName" ], "properties": { "vnfProductName": { "description": "Name of the VNF product to match.\n", "type": "string" }, "versions": { "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n", "type": "array", "items": { "type": "object", "required": [ "vnfSoftwareVersion" ], "properties": { "vnfSoftwareVersion": { "description": "A version.\n", "type": "string" }, "vnfdVersions": { "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n", "type": "array", "items": { "description": "A version.\n", "type": "string" } } } } } } } } } } }, "vnfInstanceIds": { "description": "If present, match VNF instances with an instance identifier listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" } }, "vnfInstanceNames": { "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", "type": "array", "items": { "type": "string" } } } }, "notificationTypes": { "description": "Match particular notification types. Permitted values: * ThresholdCrossedNotification * PerformanceInformationAvailableNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n", "type": "string", "enum": [ "ThresholdCrossedNotification", "PerformanceInformationAvailableNotification" ] } } }, "callbackUri": { "description": "The URI of the endpoint to send the notification to.\n", "type": "string", "format": "url" }, "_links": { "description": "Links to resources related to this resource.\n", "type": "object", "required": [ "self" ], "properties": { "self": { "description": "This type represents a link to a resource.\n", "type": "object", "required": [ "href" ], "properties": { "href": { "description": "URI of the referenced resource.\n", "type": "string", "format": "url" } } } } } } }} \ No newline at end of file +{ + "type": "array", + "items": { + "description": "This type represents a subscription related to notifications about VNF lifecycle changes.\n", + "type": "object", + "required": ["id", "callbackUri", "_links"], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "filter": { + "description": "This type represents a subscription filter related to notifications about VNF lifecycle changes. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).\n", + "type": "object", + "properties": { + "vnfInstanceSubscriptionFilter": { + "description": "This type represents subscription filter criteria to match VNF instances.\n", + "type": "object", + "properties": { + "vnfdIds": { + "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "vnfProductsFromProviders": { + "description": "If present, match VNF instances that belong to VNF products from certain providers. The attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "type": "object", + "required": ["vnfProvider"], + "properties": { + "vnfProvider": { + "description": "Name of the VNF provider to match.\n", + "type": "string" + }, + "vnfProducts": { + "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n", + "type": "array", + "items": { + "type": "object", + "required": ["vnfProductName"], + "properties": { + "vnfProductName": { + "description": "Name of the VNF product to match.\n", + "type": "string" + }, + "versions": { + "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n", + "type": "array", + "items": { + "type": "object", + "required": ["vnfSoftwareVersion"], + "properties": { + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersions": { + "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n", + "type": "array", + "items": { + "description": "A version.\n", + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "vnfInstanceIds": { + "description": "If present, match VNF instances with an instance identifier listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "vnfInstanceNames": { + "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. The attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "notificationTypes": { + "description": "Match particular notification types. Permitted values: * VnfLcmOperationOccurrenceNotification * VnfIdentifierCreationNotification * VnfIdentifierDeletionNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification types to facilitate automated code generation systems.\n", + "type": "array", + "items": { + "type": "string", + "enum": ["VnfLcmOperationOccurrenceNotification", "VnfIdentifierCreationNotification", "VnfIdentifierDeletionNotification"] + } + }, + "operationTypes": { + "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", + "type": "array", + "items": { + "description": "Value | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. \n", + "type": "string", + "enum": ["INSTANTIATE", "SCALE", "SCALE_TO_LEVEL", "CHANGE_FLAVOUR", "TERMINATE", "HEAL", "OPERATE", "CHANGE_EXT_CONN", "MODIFY_INFO"] + } + }, + "operationStates": { + "description": "Match particular LCM operation state values as reported in notifications of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", + "type": "array", + "items": { + "description": "Value | Description ------|------------ STARTING | The LCM operation is starting. PROCESSING | The LCM operation is currently in execution. COMPLETED | he LCM operation has been completed successfully. FAILED_TEMP | The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED | The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK | The LCM operation is currently being rolled back. ROLLED_BACK | The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", + "type": "string", + "enum": ["STARTING", "PROCESSING", "COMPLETED", "FAILED_TEMP", "FAILED", "ROLLING_BACK", "ROLLED_BACK"] + } + } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": ["self"], + "properties": { + "self": { + "description": "This type represents a link to a resource.\n", + "type": "object", + "required": ["href"], + "properties": { + "href": { + "description": "URI of the referenced resource.\n", + "type": "string", + "format": "url" + } + } + } + } + } + } + } +} diff --git a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot index 0e97091ce6379e4784dfda0460d9ab31960c7031..b9291d316ad4f860b3009ffae0c8b4f37ed4b755 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/ApiVersion.robot @@ -208,6 +208,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot index 4f9ce517202167069ec659036e97fa8ef9f30b8c..c377d7001b8440b1046a79e72f33f6663c77c5e2 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/Grants.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/Grants.robot @@ -5,6 +5,9 @@ Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=fals Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Collections +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml Documentation This resource represents grants. The client can use this resource to obtain permission ... from the NFVO to perform a particular VNF lifecycle operation. @@ -114,8 +117,9 @@ Send Request Grant Request in Synchronous mode Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Grant Request ${template}= Get File jsons/grantRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${Descriptor_ID} flavourId=${Flavour_ID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -126,8 +130,9 @@ Send Request Grant Request in Asynchronous mode Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Grant Request ${template}= Get File jsons/grantRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${Descriptor_ID} flavourId=${Flavour_ID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} @@ -138,23 +143,12 @@ Send Request for a new Grant Forbiden Operation Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${check_descriptors} == 1 Add VNF Descriptor Content to Grant Request ${template}= Get File jsons/grantRejectedRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} + ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${Descriptor_ID} flavourId=${Flavour_ID} Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} ${body}= Output response Set Suite Variable ${response} ${body} - -Send Request Grant Request - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${template}= Get File jsons/grantRequest.json - ${body}= Format String ${template} vnfInstanceId=${vnfInstanceId} vnfLcmOpOccId=${vnfLcmOpOccId} vnfdId=${vnfdId} flavourId=${flavourId} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body} allow_redirects=false - ${resp} Output response - ${result}= evaluate json.loads(json.dumps(${resp})) json - Log ${result} - Set Suite Variable ${response} ${result} Check HTTP Response Status Code Is [Arguments] ${expected_status} @@ -172,7 +166,7 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Get an individual grant - Successful @@ -205,8 +199,7 @@ Patch Grants Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/grants ${body}= Output response - Set Suite Variable ${response} ${body} - + Set Suite Variable ${response} ${body} Delete Grants Log Trying to perform a DELETE. This method should not be implemented @@ -216,4 +209,36 @@ Delete Grants ${body}= Output response Set Suite Variable ${response} ${body} +Add VNF Descriptor Content to Grant Request + PARSE the Descriptor File + +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file + +Fetch Information from SOL001 descriptor file + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.properties.descriptor_version} + ${flavour_id}= Get Variable Value ${topology_template.node_templates.properties.flavour_id} + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + Set Global Variable ${Flavour_ID} ${flavour_id} + +Fetch Information from SOL006 descriptor file + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0]['product-name']} + ${software_version}= Get Variable Value ${nfv.vnfd[0]['software-version']} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + diff --git a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot index 52b961997c6191823bc436e66840bce98168e18f..554ce5a39289ffe5b1e0c374ebf543fa6d907abb 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot +++ b/SOL003/VNFLifecycleOperationGranting-API/IndividualGrant.robot @@ -3,7 +3,10 @@ Resource environment/variables.txt Library OperatingSystem Library JSONLibrary Library JSONSchemaLibrary schemas/ +Library Collections Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml Documentation This resource represents an individual grant. The client can use this resource to read the grant. ... It is determined by means outside the scope of the present document, such as configuration or policy, ... how long an individual grant is available. @@ -33,6 +36,7 @@ GET an individual grant - Successful Get individual grant Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is grant + Check HTTP Response Body grant content against VNF Descriptor GET an individual grant - Process ongoing [Tags] no-synchronous-mode @@ -158,5 +162,78 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} + +Check HTTP Response Body grant content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual grant Content + +Check Individual grant Content + PARSE the Descriptor File + Match the grant Response Attributes with Descriptors + +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file + +Fetch Information from SOL001 descriptor file + @{VDU_labels}= Create List + @{VirtualLink_labels}= Create List + @{CP_labels}= Create List + FOR ${key} IN @{topology_template.node_templates.keys()} + ${key_type}= Get Variable Value ${topology_template.node_templates.${key}.type} + ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VDU_compute} + ${Link_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_virtual_link} + ${VDUcp_check}= Run Keyword And Return Status Should Be Equal As Strings ${key_type} ${tosca_type_VDU_cp} + Run Keyword If ${VDU_check} Append To List ${VDU_labels} ${key} + Run Keyword If ${Link_check} Append To List ${VirtualLink_labels} ${key} + Run Keyword If ${VDUcp_check} Append To List ${CP_labels} ${key} + END + Set Global Variable @{VDU_IDs} @{VDU_labels} + Set Global Variable @{VirtualLink_IDs} @{VirtualLink_labels} + Set Global Variable @{CP_IDs} @{CP_labels} + +Fetch Information from SOL006 descriptor file + ${VDUcount}= Get Length ${nfv.vnfd[0].vdu} + ${extCP_count}= Get Length ${nfv.vnfd[0]['ext-cpd']} + ${virtualLink_count}= Get length ${nfv.vnfd[0]['int-virtual-link-desc']} + FOR ${key} IN @{nfv.vnfd[0].keys()} + ${VDU_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} vdu + Run Keyword If ${VDU_check} Get VDU IDs ${VDUcount} + ${extCP_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} ext-cpd + Run Keyword If ${extCP_check} Get External CP IDs ${extCP_count} + ${virtualLink_check}= Run Keyword And Return Status Should Be Equal As Strings ${key} int-virtual-link-desc + Run Keyword If ${virtualLink_check} Get Virtual Link IDs ${virtualLink_count} + END + +Get VDU IDs + [Arguments] ${count} + @{VDU_labels}= Create List + @{Compute_labels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${VDU_labels} ${nfv.vnfd[0].vdu[${i}]['id']} + Append To List ${Compute_labels} ${nfv.vnfd[0].vdu[${i}]['virtual-compute-desc']} + END + Set Global Variable ${VDU_IDs} ${VDU_labels} + Set Global Variable ${Compute_IDs} ${Compute_labels} + +Get External CP IDs + [Arguments] ${count} + @{external_CPs}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${external_CPs} ${nfv.vnfd[0].ext_cpd[${i}].id} + END + Set Global Variable ${externalCP_IDs} ${external_CPs} + +Get Virtual Link IDs + [Arguments] ${count} + ${VirtualLink_labels}= Create List + FOR ${i} IN RANGE ${count} + Append To List ${VirtualLink_labels} ${nfv.vnfd[0]['int-virtual-link-desc'][${i}]['id']} + END + Set Global Variable ${VirtualLink_IDs} ${VirtualLink_labels} + +Match the grant Response Attributes with Descriptors + Run Keyword If '${descriptorType}'=='SOL006' List Should Contain Value ${externalCP_IDs} ${response['body']['extVirtualLinks'][0]['extCps'][0]['cpdId']} + Run Keyword If '${descriptorType}'=='SOL001' List Should Contain Value @{CP_IDs} ${response['body']['extVirtualLinks'][0]['extCps'][0]['cpdId']} + List Should Contain Value ${VirtualLink_IDs} ${response['body']['extManagedVirtualLinkData'][0]['vnfVirtualLinkDescId']} + List Should Contain value ${Compute_IDs} ${response['body']['vimAssets']['computeResourceFlavours'][0]['vnfdVirtualComputeDescId']} diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e9159106a9469826fc1afbdc1bcba43ebc86f61a --- /dev/null +++ b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -0,0 +1,168 @@ +tosca_definitions_version: tosca_simple_yaml_1_2 +description: "TST010 reference VNF-B" +metadata: + descriptor_id: "VNF-B" + vendor: "ETSI TST WG" + version: "2.0" +topology_template: + substitution_mappings: + node_type: "tosca.nodes.nfv.VNF" + requirements: + virtual_link_management: + [management, virtual_link_management] + virtual_link_left: + [left, virtual_link_left] + virtual_link_right: + [right, virtual_link_right] + node_templates: + right: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 1 + requirements: + virtual_link_right: + virtual_binding: VDU-B-2 + management: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 0 + requirements: + virtual_link_management: + virtual_binding: VDU-B-1 + left: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 2 + requirements: + virtual_link_left: + virtual_binding: VDU-B-1 + internal_vl: + type: "tosca.nodes.nfv.VnfVirtualLink" + properties: + connectivity_type: + layer_protocols: [ ipv4 ] + description: Internal Virtual link in the VNF + vl_profile: + max_bitrate_requirements: + root: 100000 + leaf: 20000 + min_bitrate_requirements: + root: 10000 + leaf: 10000 + internal_vdu_b_1_cp: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 2 + requirements: + - virtual_binding: VDU-B-1 + - virtual_link: internal_vl + internal_vdu_b_2_cp: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 0 + requirements: + - virtual_binding: VDU-B-2 + - virtual_link: internal_vl + vdu_b_1_vsd: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-1 image" + version: "1.1" + checksum: + algorithm: "sha-224" + hash: "somehashfortst010" + container_format: "bare" + disk-format: qcow2 + min-disk: '1' + min-ram: '2' + size: '1' + artifacts: + sw_image: + type: "tosca.artifacts.nfv.SwImage" + file: vdu-b-1.qcow2 + vdu_b_2_vsd: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-2 image" + version: "1.1" + checksum: + algorithm: "sha-224" + hash: "somehashfortst010" + container_format: "bare" + disk-format: qcow2 + min-disk: '1' + min-ram: '2' + size: '1' + artifacts: + sw_image: + type: tosca.artifacts.nfv.SwImage + file: vdu-b-2.qcow2 + vnf_b_1_VNF: + type: "tosca.nodes.nfv.VNF" + properties: + descriptor_id: "VNF-B-2VDUs" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VNF-B-2VDUs" + software_version: "2.0" + product_info_name: "VNF-B-2VDUs" + product_info_description: "TST010 reference VNF-B with 2 VDUs" + flavour_id: "VNF-B-2VDU_flavor" + flavour_description: "VNF-B with 2 VDUs flavor" + vnfm_info: + etsivnfm: + - v2.3.1 + interfaces: + Vnflcm: + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml + VDU_B_1: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-1-vcd" + descriptor: "Description of VDU-B-1" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 2 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 + numa_enabled: false + virtual_cpu: + num_virtual_cpu: 2 + requirements: + virtual_storage: + - "vdu-b-1-vsd" + VDU_B_2: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-2-vcd" + descriptor: "Description of VDU-B-2" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 4 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 6144 + numa_enabled: false + virtual_cpu: + num_virtual_cpu: 2 + requirements: + virtual_storage: + - "vdu-b-2-vsd" \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d902779a2d42d34a9f93513512d8a485dc1d838b --- /dev/null +++ b/SOL003/VNFLifecycleOperationGranting-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @@ -0,0 +1,137 @@ +nfv: + vnfd: + - id: VNF-B-2vdu + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 VDUs + software-version: '2.2' + version: '2.2' + vnfm-info: ETSI VNFM + vdu: + - id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + - id: vdu-b-2 + name: VNF-B VDU 2 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-2-vcd + virtual-storage-desc: vdu-b-2-vsd + sw-image-desc: vdu-b-2-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + virtual-compute-desc: + id: vdu-b-2-vcd + virtual-memory: + size: '6.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-2-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-2-image + name: VNF-B-2 image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B-2.qcow2' + int-virtual-link-desc: + - id: internal-vl + flavour: + id: internal-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.05' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-2 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + - id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + - id: vdu-b-2 + min-number-of-instances: '1' + max-number-of-instances: '4' + instantiation-level: + - id: double + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '2' + - vdu-id: vdu-b-2 + number-of-instances: '2' + - id: single + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '1' + - vdu-id: vdu-b-2 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' \ No newline at end of file diff --git a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt index 8ba38cb43672af1e60cdd055959be4a7a73864ab..c9405aec8f1a2f8763ea801bcb07bd8cdaae4385 100644 --- a/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt +++ b/SOL003/VNFLifecycleOperationGranting-API/environment/variables.txt @@ -41,4 +41,24 @@ ${VrQuotaAvailNotification} {} ${vnfInstanceId} myVnfInstanceId ${vnfLcmOpOccId} myLcmOccId ${vnfdId} myVnF -${flavourId} string \ No newline at end of file +${flavourId} string + +${descriptorType} SOL001 +${check_descriptors} 1 + +${tosca_type_VDU_compute} tosca.nodes.nfv.Vdu.Compute +${tosca_type_virtual_link} tosca.nodes.nfv.VnfVirtualLink +${tosca_type_VDU_cp} tosca.nodes.nfv.VduCp + +@{VDU_IDs} +@{virtualLink_IDs} +@{CP_IDs} +@{externalCP_IDs} +@{Compute_IDs} + +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} +${Flavour_ID} \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/ApiVersion.robot b/SOL003/VNFPackageManagement-API/ApiVersion.robot index 689766575bbb3bf4132067a50b066d4ff058eb22..41eeca71b215944f2afb10f879a8218f98e4b2c4 100644 --- a/SOL003/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL003/VNFPackageManagement-API/ApiVersion.robot @@ -210,6 +210,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot index 2219974bcdcb9ccf78570f9ae2824a016345649a..41839a657f0a1b90af8892c2edf659db9d5a9283 100644 --- a/SOL003/VNFPackageManagement-API/IndividualSubscription.robot +++ b/SOL003/VNFPackageManagement-API/IndividualSubscription.robot @@ -20,6 +20,7 @@ GET Individual VNF Package Subscription Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is PkgmSubscription Check HTTP Response Body Subscription Identifier matches the requested Subscription + Check HTTP Response Body of Individual Subscription content against VNF Descriptor GET Individual VNF Package Subscription with invalid resource identifier [Documentation] Test ID: 7.3.3.7.2 diff --git a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot index 6732e9cb8b2731099e014044789eb259c488c886..875b06bf86d03760f60f8f6252a5f306821e43c2 100644 --- a/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot +++ b/SOL003/VNFPackageManagement-API/IndividualVNFPackage.robot @@ -5,6 +5,7 @@ Resource VNFPackageManagementKeywords.robot Library JSONLibrary Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} ssl_verify=false + *** Test Cases *** GET Individual VNF Package [Documentation] Test ID: 7.3.3.2.1 @@ -19,6 +20,7 @@ GET Individual VNF Package Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is vnfPkgInfo Check HTTP Response Body vnfPkgInfo Identifier matches the requested VNF Package + Check HTTP Response Body of Individual VNF Package content against VNF Descriptor GET Individual VNF Package with invalid resource identifier [Documentation] Test ID: 7.3.3.2.2 diff --git a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 88032d9755bd37d55e4836ccb23642c05e09ad0e..04def23c7788ed8507443519981451abdfd7519b 100644 --- a/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL003/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -9,7 +9,8 @@ Library Collections Library JSONSchemaLibrary schemas/ Library Process Library String - +Variables descriptors/SOL001/VNFD/vnfd_SOL001.yaml +Variables descriptors/SOL006/VNFD/vnfd_SOL006.yaml *** Keywords *** Get all VNF Packages @@ -691,13 +692,13 @@ Send Delete request for individual VNF Package Subscription with invalid resourc Set Suite Variable ${response} ${output} Send Post request for individual VNF Package Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for individual VNF Package Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -706,7 +707,7 @@ Send Put request for individual VNF Package Subscription Set Suite Variable ${response} ${output} Send Patch request for individual VNF Package Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -1524,4 +1525,63 @@ GET OnBoarded VNF Packages with fields and exclude_default attribute selector Check Postcondition VNF Package Subscription is Deleted Log Check Postcondition Subscription is deleted GET individual VNF Package Subscription - Check HTTP Response Status Code Is 404 \ No newline at end of file + Check HTTP Response Status Code Is 404 + +Check HTTP Response Body of Individual VNF Package content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual VNF Package Content + +Check Individual VNF Package Content + PARSE the Descriptor File + Match the VNF Package Response Attributes with Descriptors + +PARSE the Descriptor File + Run Keyword If '${descriptorType}'=='SOL001' Fetch Information from SOL001 descriptor file ELSE Fetch Information from SOL006 descriptor file + +Fetch Information from SOL001 descriptor file + ${descriptor_id}= Get Variable Value ${topology_template.node_templates.properties.descriptor_id} + ${provider}= Get Variable Value ${topology_template.node_templates.properties.provider} + ${product_name}= Get Variable Value ${topology_template.node_templates.properties.product_name} + ${software_version}= Get Variable Value ${topology_template.node_templates.properties.software_version} + ${descriptor_version}= Get Variable Value ${topology_template.node_templates.properties.descriptor_version} + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + +Fetch Information from SOL006 descriptor file + ${descriptor_id}= Get Variable Value ${nfv.vnfd[0].id} + ${provider}= Get Variable Value ${nfv.vnfd[0].provider} + ${product_name}= Get Variable Value ${nfv.vnfd[0]['product-name']} + ${software_version}= Get Variable Value ${nfv.vnfd[0]['software-version']} + ${descriptor_version}= Get Variable Value ${nfv.vnfd[0].version} + Set Global Variable ${Descriptor_ID} ${descriptor_id} + Set Global Variable ${Provider} ${provider} + Set Global Variable ${Product_Name} ${product_name} + Set Global Variable ${Software_Version} ${software_version} + Set Global Variable ${Descriptor_Version} ${descriptor_version} + +Match the VNF Package Response Attributes with Descriptors + #Checking Response attributes with VNF Descriptors + Should Be Equal As Strings ${response['body']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['vnfSoftwareVersion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['vnfdVersion']} ${Descriptor_Version} + + +Check HTTP Response Body of Individual Subscription content against VNF Descriptor + Run Keyword If ${check_descriptors} == 1 Check Individual VNF Subscription Content + +Check Individual VNF Subscription Content + PARSE the Descriptor File + Match the VNF subscription Response Attributes with Descriptors + +Match the VNF subscription Response Attributes with Descriptors + #Checking Response attributes with VNF Descriptors + Should Be Equal As Strings ${response['body']['filter']['vnfdId']} ${Descriptor_ID} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders'][0]['vnfProvider']} ${Provider} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders'][0]['vnfProducts'][0]['vnfProductName']} ${Product_Name} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders'][0]['vnfProducts']['versions'][0]['vnfSoftwareVersion']} ${Software_Version} + Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders'][0]['vnfProducts']['versions'][0]['vnfdVersion']} ${Descriptor_Version} + \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e9159106a9469826fc1afbdc1bcba43ebc86f61a --- /dev/null +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -0,0 +1,168 @@ +tosca_definitions_version: tosca_simple_yaml_1_2 +description: "TST010 reference VNF-B" +metadata: + descriptor_id: "VNF-B" + vendor: "ETSI TST WG" + version: "2.0" +topology_template: + substitution_mappings: + node_type: "tosca.nodes.nfv.VNF" + requirements: + virtual_link_management: + [management, virtual_link_management] + virtual_link_left: + [left, virtual_link_left] + virtual_link_right: + [right, virtual_link_right] + node_templates: + right: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 1 + requirements: + virtual_link_right: + virtual_binding: VDU-B-2 + management: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 0 + requirements: + virtual_link_management: + virtual_binding: VDU-B-1 + left: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 2 + requirements: + virtual_link_left: + virtual_binding: VDU-B-1 + internal_vl: + type: "tosca.nodes.nfv.VnfVirtualLink" + properties: + connectivity_type: + layer_protocols: [ ipv4 ] + description: Internal Virtual link in the VNF + vl_profile: + max_bitrate_requirements: + root: 100000 + leaf: 20000 + min_bitrate_requirements: + root: 10000 + leaf: 10000 + internal_vdu_b_1_cp: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 2 + requirements: + - virtual_binding: VDU-B-1 + - virtual_link: internal_vl + internal_vdu_b_2_cp: + type: "tosca.nodes.nfv.VduCp" + properties: + order: 0 + requirements: + - virtual_binding: VDU-B-2 + - virtual_link: internal_vl + vdu_b_1_vsd: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-1 image" + version: "1.1" + checksum: + algorithm: "sha-224" + hash: "somehashfortst010" + container_format: "bare" + disk-format: qcow2 + min-disk: '1' + min-ram: '2' + size: '1' + artifacts: + sw_image: + type: "tosca.artifacts.nfv.SwImage" + file: vdu-b-1.qcow2 + vdu_b_2_vsd: + type: "tosca.nodes.nfv.Vdu.VirtualBlockStorage" + properties: + virtual_block_storage_data: + size_of_storage: 20 + rdma_enabled: false + sw_image_data: + name: "vdu-b-2 image" + version: "1.1" + checksum: + algorithm: "sha-224" + hash: "somehashfortst010" + container_format: "bare" + disk-format: qcow2 + min-disk: '1' + min-ram: '2' + size: '1' + artifacts: + sw_image: + type: tosca.artifacts.nfv.SwImage + file: vdu-b-2.qcow2 + vnf_b_1_VNF: + type: "tosca.nodes.nfv.VNF" + properties: + descriptor_id: "VNF-B-2VDUs" + descriptor_version: "2.0" + provider: "ETSI TST WG" + product_name: "VNF-B-2VDUs" + software_version: "2.0" + product_info_name: "VNF-B-2VDUs" + product_info_description: "TST010 reference VNF-B with 2 VDUs" + flavour_id: "VNF-B-2VDU_flavor" + flavour_description: "VNF-B with 2 VDUs flavor" + vnfm_info: + etsivnfm: + - v2.3.1 + interfaces: + Vnflcm: + scale: + implementation: scale-example.yaml + terminate: + implementation: terminate-example.yaml + operate: + implementation: operate-example.yaml + VDU_B_1: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-1-vcd" + descriptor: "Description of VDU-B-1" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 2 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 4096 + numa_enabled: false + virtual_cpu: + num_virtual_cpu: 2 + requirements: + virtual_storage: + - "vdu-b-1-vsd" + VDU_B_2: + type: "tosca.nodes.nfv.Vdu.Compute" + properties: + name: "vdu-b-2-vcd" + descriptor: "Description of VDU-B-2" + vdu_profile: + min_number_of_instances: 1 + max_number_of_instances: 4 + capabilities: + virtual_compute: + properties: + virtual_memory: + virtual_mem_size: 6144 + numa_enabled: false + virtual_cpu: + num_virtual_cpu: 2 + requirements: + virtual_storage: + - "vdu-b-2-vsd" \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml b/SOL003/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d902779a2d42d34a9f93513512d8a485dc1d838b --- /dev/null +++ b/SOL003/VNFPackageManagement-API/descriptors/SOL006/VNFD/vnfd_SOL006.yaml @@ -0,0 +1,137 @@ +nfv: + vnfd: + - id: VNF-B-2vdu + provider: ETSI TST WG + product-name: TST010 reference VNF-B with 2 VDUs + software-version: '2.2' + version: '2.2' + vnfm-info: ETSI VNFM + vdu: + - id: vdu-b-1 + name: VNF-B VDU 1 + int-cpd: + - id: left + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-1-vcd + virtual-storage-desc: vdu-b-1-vsd + sw-image-desc: vdu-b-1-image + - id: vdu-b-2 + name: VNF-B VDU 2 + int-cpd: + - id: right + layer-protocol: ethernet + - id: management + layer-protocol: ethernet + - id: internal + layer-protocol: ethernet + int-virtual-link-desc: internal-vl + virtual-compute-desc: vdu-b-2-vcd + virtual-storage-desc: vdu-b-2-vsd + sw-image-desc: vdu-b-2-image + virtual-compute-desc: + id: vdu-b-1-vcd + virtual-memory: + size: '4.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-1-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-1-image + name: VNF-B image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B.qcow2' + virtual-compute-desc: + id: vdu-b-2-vcd + virtual-memory: + size: '6.0' + virtual-cpu: + num-virtual-cpu: '2' + virtual-storage-desc: + id: vdu-b-2-vsd + type-of-storage: root-storage + size-of-storage: '0' + sw-image-desc: + id: vdu-b-2-image + name: VNF-B-2 image + version: '1.1' + checksum: + algorithm: sha-224 + hash: somehashfortst010 + container-format: bare + disk-format: qcow2 + min-disk: '1' + min-ram: '2.0' + size: '1' + image: 'http://someurl.com/VNF-B-2.qcow2' + int-virtual-link-desc: + - id: internal-vl + flavour: + id: internal-vl-flavour + qos: + latency: '1' + packet-delay-variation: '1' + packet-loss-ratio: '0.05' + connectivity-type: + layer-protocol: ethernet + ext-cpd: + - id: ext-b-left + int-cpd: + vdu-id: vdu-b-1 + cpd: left + layer-protocol: ethernet + - id: management + int-cpd: + vdu-id: vdu-b-1 + cpd: management + layer-protocol: ethernet + - id: ext-b-right + int-cpd: + vdu-id: vdu-b-2 + cpd: right + layer-protocol: ethernet + df: + id: normal + vdu-profile: + - id: vdu-b-1 + min-number-of-instances: '1' + max-number-of-instances: '2' + - id: vdu-b-2 + min-number-of-instances: '1' + max-number-of-instances: '4' + instantiation-level: + - id: double + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '2' + - vdu-id: vdu-b-2 + number-of-instances: '2' + - id: single + vdu-level: + - vdu-id: vdu-b-1 + number-of-instances: '1' + - vdu-id: vdu-b-2 + number-of-instances: '1' + default-instantiation-level: single + lcm-operations-configuration: + scale-vnf-to-level-op-config: + arbitrary-target-levels-supported: 'true' + terminate-vnf-op-config: + min-graceful-termination: '1' + operate-vnf-op-config: + min-graceful-stop-timeout: '1' \ No newline at end of file diff --git a/SOL003/VNFPackageManagement-API/environment/variables.txt b/SOL003/VNFPackageManagement-API/environment/variables.txt index 1bb5c34f55b8713c22e0238f5e2b11bb5a0a6f2b..b5779a0e8f6fa744b0578a97642243528f610032 100644 --- a/SOL003/VNFPackageManagement-API/environment/variables.txt +++ b/SOL003/VNFPackageManagement-API/environment/variables.txt @@ -86,4 +86,14 @@ ${NEG_FILTER} nfvId=41fdd38a-3d4c-465c-83e0-f80e014425f8 # Negative case, ${fields} softwareImages,additionalArtifacts ${VAR_SEPERATOR} & -${callbackResp} localhost \ No newline at end of file +${callbackResp} localhost + +${descriptorType} SOL001 +${check_descriptors} 1 + +${Descriptor_ID} +${Provider} +${Product_Name} +${Software_Version} +${Descriptor_Version} +${Flavour_ID} diff --git a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot index b975fc71f1050ec2ddd87f9482b6cb22c58a6d77..88ba224c79d7d7c35ff35d7d8a5afbe5849daf64 100644 --- a/SOL003/VNFPerformanceManagement-API/ApiVersion.robot +++ b/SOL003/VNFPerformanceManagement-API/ApiVersion.robot @@ -209,6 +209,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot index 62be3b6fc6d445eb04892876739ae2acc4d57eb0..48017858d91da98cf5c2be2cf5b4c8d8bb7ff6f0 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualReport.robot @@ -83,7 +83,7 @@ DELETE Individual Performance Report - Method not implemented Get Individual Performance Report Log Trying to get a performance report present in the VNFM Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -91,21 +91,21 @@ Get Individual Performance Report Get Individual Performance Report with invalid resource endpoint Log Trying to get a performance report with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${erroneousReportId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for Individual Performance Report Log Trying to create new performance report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${newReportId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for Individual Performance Report Log Trying to update performance report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -115,7 +115,7 @@ Send Put request for Individual Performance Report Send Patch request for Individual Performance Report Log Trying to update performance report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -125,7 +125,7 @@ Send Patch request for Individual Performance Report Send Delete request for Individual Performance Report Log Trying to delete performance report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pm_jobs/${pmJobId}/reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot index b34edb3a91cfbc27d81bd97def8c5aab6ef0776b..1790d9cd41ef3d7b4652dab7af6cc44b098a73a3 100644 --- a/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL003/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -113,7 +113,7 @@ PATCH Individual Threshold - Precondition failed GET Individual VNF Performance Threshold Log Trying to get a Threhsold present in the VNFM Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -121,28 +121,28 @@ GET Individual VNF Performance Threshold GET individual VNF Performance Threshold with invalid resource identifier Log Trying to get a Threhsold with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${erroneousThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual VNF Performance Threshold Log Trying to delete a Threhsold in the VNFM - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual VNF Performance Threshold with invalid resource identifier Log Trying to delete a Threhsold in the VNFM with invalid id - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${erroneousThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual VNF Performance Threshold Log Trying to create new threshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${newThresholdId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -150,7 +150,7 @@ Send Post request for individual VNF Performance Threshold Send Put request for individual VNF Performance Threshold Log Trying to PUT threshold Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} diff --git a/SOL003/VNFPerformanceManagement-API/Thresholds.robot b/SOL003/VNFPerformanceManagement-API/Thresholds.robot index b43be7c97b24083cf0268df9c4a10120ca2080dc..1555adaa82d76dbf0f9432fa1ad442e44109e583 100644 --- a/SOL003/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL003/VNFPerformanceManagement-API/Thresholds.robot @@ -140,7 +140,7 @@ GET Performance Thresholds - Bad Request Response too Big GET all Performance Thresholds Log Trying to get all thresholds present in the VNFM Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} @@ -148,7 +148,7 @@ GET all Performance Thresholds GET Performance Thresholds with attribute-based filter Log Trying to get thresholds present in the VNFM with filter Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_OK} ${output}= Output response Set Suite Variable ${response} ${output} @@ -156,7 +156,7 @@ GET Performance Thresholds with attribute-based filter GET Performance Thresholds with invalid attribute-based filter Log Trying to get thresholds present in the VNFM with invalid filter Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds?${FILTER_KO} ${output}= Output response Set Suite Variable ${response} ${output} @@ -164,7 +164,7 @@ GET Performance Thresholds with invalid attribute-based filter GET VNF Performance Thresholds with invalid resource endpoint Log Trying to get thresholds present in the VNFM with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/threshold ${output}= Output response Set Suite Variable ${response} ${output} @@ -200,7 +200,7 @@ Send PATCH Request for all Performance Thresholds Send DELETE Request for all Performance Thresholds Log DELETE THresholds - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot index 37cd37715cd019915067f5b0357d409cd3ade388..45cf503da29fc9e68de87de00b6badeadf7ae3c4 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/ApiVersion.robot @@ -206,6 +206,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot index f33ff0732a10ea42dea173b089f2f39fc1a1482b..237409f6437f11a58d98526ce520b19026b4490d 100644 --- a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot +++ b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/VRQANOperationKeywords.robot @@ -34,7 +34,7 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK @@ -95,7 +95,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_subscribe=${callback_subscribe} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -107,7 +107,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_subscribe=${callback_subscribe} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -119,7 +119,7 @@ Send Post request for new Virtualised Resources Quota Available Notification sub Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/vrQuotaAvailSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_subscribe=${callback_subscribe} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_subscribe=${callback_subscribe} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} diff --git a/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest .json b/SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest.json similarity index 100% rename from SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest .json rename to SOL003/VirtualisedResourcesQuotaAvailableNotification-API/jsons/vrQuotaAvailSubscriptionRequest.json diff --git a/SOL005/NSDManagement-API/ApiVersion.robot b/SOL005/NSDManagement-API/ApiVersion.robot index 0d34a455b101db1a061a6ea412c5488308c1d2e3..aa117f09badf7639a627d8f927c1e3e60231ab3d 100644 --- a/SOL005/NSDManagement-API/ApiVersion.robot +++ b/SOL005/NSDManagement-API/ApiVersion.robot @@ -208,6 +208,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL005/NSDManagement-API/NSDManagementKeywords.robot b/SOL005/NSDManagement-API/NSDManagementKeywords.robot index 67056a5898632f0be0c62bc48379016a158cc88e..9320d4be926946e3d712a2bfeb4b51504e2537af 100644 --- a/SOL005/NSDManagement-API/NSDManagementKeywords.robot +++ b/SOL005/NSDManagement-API/NSDManagementKeywords.robot @@ -18,7 +18,7 @@ GET all Network Service Descriptors Information Log The GET method queries multiple NS descriptors Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -26,7 +26,7 @@ GET Network Service Descriptors Information with attribute-based filter Log The GET method queries multiple NS descriptors using Attribute-based filtering parameters Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?${NSD_NAME} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?${NSD_NAME} ${output}= Output response Set Suite Variable ${response} ${output} @@ -39,7 +39,7 @@ GET Network Service Descriptors Information with invalid attribute-based filter Log The GET method queries multiple NS descriptors using Attribute-based filtering parameters. Negative case, with erroneous attribute name Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?${NEG_FIELDS} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -49,7 +49,7 @@ Get all Network Service Descriptors Information with malformed authorization tok Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors + REST.Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -58,7 +58,7 @@ Get all Network Service Descriptors Information without authorization token Log The GET method queries omitting token Set Headers {"Accept": "${ACCEPT_JSON}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -68,7 +68,7 @@ Get all Network Service Descriptors Information with expired or revoked authoriz Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -76,7 +76,7 @@ GET all Network Service Descriptors Information with all_fields attribute select Log The GET method queries multiple NS descriptors using Attribute-based filtering parameters "all_fields" Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?all_fields + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -90,7 +90,7 @@ GET all Network Service Descriptors Information with exclude_default attribute s Log Trying to get all NSDs present in the NFVO Catalogue, using exclude_default filter. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_default + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -104,7 +104,7 @@ GET all Network Service Descriptors Information with fields attribute selector Log Trying to get all NSDs present in the NFVO Catalogue, using fields filter. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?fields=${fields} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -112,7 +112,7 @@ GET all Network Service Descriptors Information with exclude_default and fields Log Trying to get all NSDs present in the NFVO Catalogue, using fields filter. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_default&fields=${fields} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_default&fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -127,7 +127,7 @@ GET all Network Service Descriptors Information with exclude_fields attribute se Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use exclude_fields option Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_fields=${fields} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -143,7 +143,7 @@ Send Post Request to create new Network Service Descriptor Resource Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/createNsdInfoRequest.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${body} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -151,7 +151,7 @@ Check Postcondition NsdInfo Exists Log Checking that nsd info exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${response['body']['id']} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -162,7 +162,7 @@ Send PUT Request for all Network Service Descriptors Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -171,7 +171,7 @@ Send PATCH Request for all Network Service Descriptors Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -180,7 +180,7 @@ Send DELETE Request for all Network Service Descriptors Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -192,7 +192,7 @@ GET Individual Network Service Descriptor Information Log The GET method reads information about an individual NS descriptor Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -205,7 +205,7 @@ GET Individual Network Service Descriptor Information with invalid resource iden Log Trying to perform a GET on an erroneous nsDescriptorInfoId Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId} Integer response status 404 ${output}= Output response Set Suite Variable ${response} ${output} @@ -217,7 +217,7 @@ Send PATCH to disable Individual Network Service Descriptor Set Headers {"If-Match": "${original_etag}"} ${body}= Get File jsons/NsdInfoModificationDisable.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -238,7 +238,7 @@ Send PATCH to enable Individual Network Service Descriptor Set Headers {"If-Match": "${original_etag}"} ${body}= Get File jsons/NsdInfoModificationEnable.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -249,7 +249,7 @@ Send PATCH to enable Individual Network Service Descriptor in onboarding state d Set Headers {"If-Match": "${original_etag}"} ${body}= Get File jsons/NsdInfoModificationEnable.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId} ${body} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -260,7 +260,7 @@ Send PATCH to enable Individual Network Service Descriptor in onboarding state d Set Headers {"If-Match": "${wrong_etag}"} ${body}= Get File jsons/NsdInfoModificationEnable.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -268,21 +268,21 @@ Send DELETE Request for Individual Network Service Descriptor Log Trying to perform a DELETE nsdInfo. The nsdInfo should be in "NOT_USED" usageState and in "DISABLED" operationalState. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${disabledNsdInfoId} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${disabledNsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} Check Postcondition Network Service Descriptor is Deleted Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${disabledNsdInfoId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${disabledNsdInfoId} Integer response status 404 Send DELETE Request for Individual Network Service Descriptor in operational state ENABLED Log Trying to perform a DELETE nsdInfo in ENABLED operational state Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -294,7 +294,7 @@ Send POST Request for Individual Network Service Descriptor Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -303,7 +303,7 @@ Send PUT Request for Individual Network Service Descriptor Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -331,7 +331,7 @@ Get NSD Content in Zip Format Log Trying to get a NSD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -339,7 +339,7 @@ Get NSD Content with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -347,7 +347,7 @@ Get NSD Content with conflict due to onboarding state Log Trying to get a VNFD from a given NSD Management present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -357,7 +357,7 @@ GET NSD Content with Range Request Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -367,7 +367,7 @@ GET NSD Content with invalid Range Request Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -415,7 +415,7 @@ Send POST Request for NSD Content Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a POST. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -423,7 +423,7 @@ Send PATCH Request for NSD Content Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -431,7 +431,7 @@ Send DELETE Request for NSD Content Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a DELETE. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -439,7 +439,7 @@ GET all PNF Descriptors Information Log The GET method queries multiple PNF descriptors Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -447,7 +447,7 @@ GET PNF Descriptors Information with attribute-based filter Log The GET method queries multiple PNF descriptors using Attribute-based filtering parameters Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?${PNFD_NAME} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?${PNFD_NAME} ${output}= Output response Set Suite Variable ${response} ${output} @@ -460,7 +460,7 @@ GET PNF Descriptors Information with invalid attribute-based filter Log The GET method queries multiple PNF descriptors using Attribute-based filtering parameters. Negative case, with erroneous attribute name Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?${NEG_FIELDS} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?${NEG_FIELDS} ${output}= Output response Set Suite Variable ${response} ${output} @@ -468,7 +468,7 @@ GET all PNF Descriptors Information with all_fields attribute selector Log The GET method queries multiple PNF descriptors using Attribute-based filtering parameters "all_fields" Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?all_fields + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -482,7 +482,7 @@ GET all PNF Descriptors Information with exclude_default attribute selector Log Trying to get all PNFDs present in the NFVO Catalogue, using exclude_default filter. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_default + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -496,7 +496,7 @@ GET all PNF Descriptors Information with fields attribute selector Log Trying to get all PNFDs present in the NFVO Catalogue, using fields filter. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?fields=${fields} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -504,7 +504,7 @@ GET all PNF Descriptors Information with exclude_default and fields attribute se Log Trying to get all PNFDs present in the NFVO Catalogue, using fields filter. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_default&fields=${fields} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_default&fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -519,7 +519,7 @@ GET all PNF Descriptors Information with exclude_fields attribute selector Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use exclude_fields option Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_fields=${fields} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -535,7 +535,7 @@ Send Post Request to create new PNF Descriptor Resource Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/createPnfdInfoRequest.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${body} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -543,7 +543,7 @@ Check Postcondition PnfdInfo Exists Log Checking that nsd info exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${response['body']['id']} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -554,7 +554,7 @@ Send PUT Request for all PNF Descriptors Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -563,7 +563,7 @@ Send PATCH Request for all PNF Descriptors Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -572,7 +572,7 @@ Send DELETE Request for all PNF Descriptors Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors ${output}= Output response Set Suite Variable ${response} ${output} @@ -580,7 +580,7 @@ GET Individual PNF Descriptor Information Log The GET method reads information about an individual PNF descriptor Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -593,7 +593,7 @@ GET Individual PNF Descriptor Information with invalid resource identifier Log Trying to perform a GET on an erroneous nsDescriptorInfoId Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${erroneous_pnfdInfoId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${erroneous_pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -604,7 +604,7 @@ Send PATCH to update Individual PNF Descriptor Set Headers {"If-Match": "${original_etag}"} ${body}= Get File jsons/PnfdInfoModification.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${body} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} Set Suite Variable ${body["userDefinedData"]} ${userDefinedDataSet} @@ -620,7 +620,7 @@ Send PATCH to update Individual PNF Descriptor with HTTP Etag precondition failu Set Headers {"If-Match": "${wrong_etag}"} ${body}= Get File jsons/PnfdInfoModification.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${body} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -628,14 +628,14 @@ Send DELETE Request for Individual PNF Descriptor Log Trying to perform a DELETE pnfdInfo. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} Check Postcondition PNF Descriptor is Deleted Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} Integer response status 404 Send POST Request for Individual PNF Descriptor @@ -643,7 +643,7 @@ Send POST Request for Individual PNF Descriptor Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -652,7 +652,7 @@ Send PUT Request for Individual PNF Descriptor Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -660,7 +660,7 @@ Get PNFD Content Log Trying to get a NSD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -669,7 +669,7 @@ Get PNFD Content with Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -678,7 +678,7 @@ Get PNFD Content with invalid Range Request Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -686,7 +686,7 @@ Get PNFD Content with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${erroneous_pnfdInfoId}/pnfd_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${erroneous_pnfdInfoId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -694,7 +694,7 @@ Get PNFD Content with conflict due to onboarding state Log Trying to get a PNFD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${onboardingStatePnfdId}/pnfd_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${onboardingStatePnfdId}/pnfd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -712,7 +712,7 @@ Send PUT Request to upload PNFD Content with conflict due to onboarding state Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get Binary File ${contentFilePnfd} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${creatingNsdInfoId}/pnfd_content ${body} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${creatingNsdInfoId}/pnfd_content ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -720,7 +720,7 @@ Send POST Request for PNFD Content Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a POST. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -728,7 +728,7 @@ Send PATCH Request for PNFD Content Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -736,7 +736,7 @@ Send DELETE Request for PNFD Content Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a DELETE. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/pnf_descriptors/${pnfdInfoId}/nsd_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -749,7 +749,7 @@ Get all NSD Management Subscriptions Log Trying to get the list of subscriptions Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -757,7 +757,7 @@ Get NSD Management Subscriptions with attribute-based filters Log Trying to get the list of subscriptions using filters Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -766,7 +766,7 @@ Get NSD Management Subscriptions with invalid attribute-based filters Log Trying to get the list of subscriptions using filters with wrong attribute name Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -775,7 +775,7 @@ Get NSD Management Subscriptions with invalid resource endpoint Log Trying to perform a request on a Uri which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -790,14 +790,14 @@ Send Post Request for NSD Management Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} nsdId=${NS_DescriptorID} nsdName=${NS_Name} nsdVersion=${NS_Version} nsdDesigner=${Designer} nsdInvariantId=${NS_InvariantId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 ... Check Notification Endpoint -Send Post Request for Duplicated NSD Management Subscription +Send POST Request for Duplicated NSD Management Subscription Log Trying to create a subscription with an already created content Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} @@ -805,7 +805,7 @@ Send Post Request for Duplicated NSD Management Subscription ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} notifCallbackUri=${notifCallbackUri} nsdId=${NS_DescriptorID} nsdName=${NS_Name} nsdVersion=${NS_Version} nsdDesigner=${Designer} nsdInvariantId=${NS_InvariantId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 @@ -818,7 +818,7 @@ Send Put Request for NSD Management Subscriptions Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -828,7 +828,7 @@ Send Patch Request for NSD Management Subscriptions Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -837,7 +837,7 @@ Send Delete Request for NSD Management Subscriptions Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -881,7 +881,7 @@ Check Postcondition NSD Management Subscription Is Set Log Trying to get the subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -890,7 +890,7 @@ Check Postcondition NSD Management Subscription Is Set Check Postcondition Subscription Resource Returned in Location Header Is Available Log Going to check postcondition Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${response['headers']['Location']} + REST.GET ${response['headers']['Location']} Integer response status 200 Log Received a 200 OK as expected ${contentType}= Output response headers Content-Type @@ -908,7 +908,7 @@ Get Individual NSD Management Subscription Log Trying to get a single subscription identified by subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -916,7 +916,7 @@ GET individual NSD Management Subscription with invalid resource identifier Log Trying to perform a request on a subscriptionID which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -924,7 +924,7 @@ Send Delete request for individual NSD Management Subscription Log Trying to perform a DELETE on a subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -937,31 +937,31 @@ Send Delete request for individual NSD Management Subscription with invalid reso Log Trying to perform a DELETE on a subscriptionId which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual NSD Management Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for individual NSD Management Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch request for individual NSD Management Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1000,7 +1000,7 @@ Check HTTP Response Header Contain Link Check PostCondition GET Individual Network Service Descriptor Information Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoId} Should Be Equal As Strings ${response['status']} 200 Wait for individual grant successful notification @@ -1010,7 +1010,7 @@ Get single file NSD in Plain Format Log Trying to get a NSD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1018,7 +1018,7 @@ Get NSD in Zip Format Log Trying to get a NSD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1027,7 +1027,7 @@ Get single file NSD in Plain or Zip Format Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdPlain}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1036,7 +1036,7 @@ Get multi file NSD in Plain or Zip Format Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1044,7 +1044,7 @@ Get multi file NSD in Plain Format Log Trying to get a negative case performing a get on a NSD present in the NFVO Catalogue. Accept will be text/plain but NSD is composed my multiple files. Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1053,7 +1053,7 @@ Get NSD with invalid resource identifier Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_nsdInfoId}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1062,7 +1062,7 @@ Get NSD with conflict due to onboarding state Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1070,7 +1070,7 @@ Send POST Request for NSD Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a POST. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1078,7 +1078,7 @@ Send PUT Request for NSD Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1086,7 +1086,7 @@ Send PATCH Request for NSD Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1094,7 +1094,7 @@ Send DELETE Request for NSD Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a DELETE. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1102,14 +1102,14 @@ Get NSD with security information Log Trying to get a NSD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd/include_signatures + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/nsd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} Get NSD Archive Manifest Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdPlain}/manifest + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdPlain}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1117,7 +1117,7 @@ Get NSD Archive Manifest with security information Log Trying to get a NSD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest/include_signatures + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1126,7 +1126,7 @@ Get NSD Archive Manifest with conflict due to onboarding state Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1134,7 +1134,7 @@ Send POST Request for NSD Archive Manifest Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a POST. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1142,7 +1142,7 @@ Send PUT Request for NSD Archive Manifest Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1150,7 +1150,7 @@ Send PATCH Request for NSD Archive Manifest Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1158,7 +1158,7 @@ Send DELETE Request for NSD Archive Manifest Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a DELETE. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${nsdInfoIdZip}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1166,7 +1166,7 @@ Get single file PNFD in Plain Format Log Trying to get a PNFD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1174,7 +1174,7 @@ Get PNFD in Zip Format Log Trying to get a PNFD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1183,7 +1183,7 @@ Get single file PNFD in Plain or Zip Format Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1192,7 +1192,7 @@ Get multi file PNFD in Plain or Zip Format Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1200,7 +1200,7 @@ Get multi file PNFD in Plain Format Log Trying to get a negative case performing a get on a PNFD present in the NFVO Catalogue. Accept will be text/plain but PNFD is composed my multiple files. Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1209,7 +1209,7 @@ Get PNFD with invalid resource identifier Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_PNFDInfoId}/pnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${erroneous_PNFDInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1218,7 +1218,7 @@ Get PNFD with conflict due to onboarding state Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${onboardingStatePnfdId}/pnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${onboardingStatePnfdId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1226,7 +1226,7 @@ Get PNFD with security information Log Trying to get a PNFD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd/include_signatures + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1234,7 +1234,7 @@ Send POST Request for PNFD Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a POST. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1242,7 +1242,7 @@ Send PUT Request for PNFD Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1250,7 +1250,7 @@ Send PATCH Request for PNFD Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -1258,14 +1258,14 @@ Send DELETE Request for PNFD Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a DELETE. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/pnfd ${output}= Output response Set Suite Variable ${response} ${output} Get PNFD Archive Manifest Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1273,7 +1273,7 @@ Get PNFD Archive Manifest with security information Log Trying to get a PNFD present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest/include_signatures + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1282,7 +1282,7 @@ Get PNFD Archive Manifest with conflict due to onboarding state Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${notOnboardedNsdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1290,7 +1290,7 @@ Send POST Request for PNFD Archive Manifest Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a POST. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1298,7 +1298,7 @@ Send PUT Request for PNFD Archive Manifest Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1306,7 +1306,7 @@ Send PATCH Request for PNFD Archive Manifest Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a PATCH. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1314,7 +1314,7 @@ Send DELETE Request for PNFD Archive Manifest Pass Execution If ${testOptionalMethods} == 0 optional methods are not implemented on the FUT. Skipping test. Log Trying to perform a DELETE. This method should not be implemented Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/ns_descriptors/${pnfdInfoId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} diff --git a/SOL005/NSFaultManagement-API/ApiVersion.robot b/SOL005/NSFaultManagement-API/ApiVersion.robot index 5038878def496d00b73f183a6e3fd60ebbc30c95..5b8291f740ab351dcdd9a583d6b1f836ca710123 100644 --- a/SOL005/NSFaultManagement-API/ApiVersion.robot +++ b/SOL005/NSFaultManagement-API/ApiVersion.robot @@ -208,6 +208,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot index ab113914a6cc9a8b7d4d357c1eafaf958c2a77af..d67a251d2d18a501781683dcea5c3c4e36c1cf19 100644 --- a/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot +++ b/SOL005/NSFaultManagement-API/NSFMOperationKeywords.robot @@ -35,7 +35,7 @@ Check HTTP Response Header Contains Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK @@ -214,34 +214,34 @@ POST Subscription Set Headers {"Content-Type": "${CONTENT_TYPE}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} ${template}= Get File jsons/fmSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} -Post Create subscription - DUPLICATION - Log Trying to create a subscription with an already created content - Pass Execution If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 0 NVFO is not permitting duplication. Skipping the test - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${template}= Get File jsons/fmSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} +# Post Create subscription - DUPLICATION + # Log Trying to create a subscription with an already created content + # Pass Execution If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 0 NVFO is not permitting duplication. Skipping the test + # Set Headers {"Accept": "${ACCEPT}"} + # Set Headers {"Content-Type": "${CONTENT_TYPE}"} + # Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + # ${template}= Get File jsons/fmSubscriptionRequest.json + # ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + # Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + # ${outputResponse}= Output response + # Set Global Variable ${response} ${outputResponse} -Post Create subscription - NO-DUPLICATION - Log Trying to create a subscription with an already created content - Pass Execution If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 1 NVFO permits duplication. Skipping the test - Set Headers {"Accept": "${ACCEPT}"} - Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - ${template}= Get File jsons/fmSubscriptionRequest.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} - Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} +# Post Create subscription - NO-DUPLICATION + # Log Trying to create a subscription with an already created content + # Pass Execution If ${VNFM_ALLOWS_DUPLICATE_SUBS} == 1 NVFO permits duplication. Skipping the test + # Set Headers {"Accept": "${ACCEPT}"} + # Set Headers {"Content-Type": "${CONTENT_TYPE}"} + # Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + # ${template}= Get File jsons/fmSubscriptionRequest.json + # ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} + # Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + # ${outputResponse}= Output response + # Set Global Variable ${response} ${outputResponse} GET Subscriptions Log Get the list of active subscriptions @@ -617,3 +617,8 @@ Check PostCondition HTTP Response Body Subscriptions Matches the requested attri :FOR ${item} IN @{response['body']} Should Contain Match ${item['filter']['probableCauses']} ${probableCause} case_insensitive=True END + +Check Response for duplicated subscription + Run Keyword If ${NFVO_ALLOWS_DUPLICATE_SUBS} == 1 Check HTTP Response Status Code Is 201 + Run Keyword If ${NFVO_ALLOWS_DUPLICATE_SUBS} == 1 Check HTTP Response Body Json Schema Is FmSubscription + Run Keyword If ${NFVO_ALLOWS_DUPLICATE_SUBS} == 0 Check HTTP Response Status Code Is 303 diff --git a/SOL005/NSFaultManagement-API/Subscriptions.robot b/SOL005/NSFaultManagement-API/Subscriptions.robot index 4b7e352fa4f6142fb7f66246845a15c6b24e6558..b8e00065ea82e08ac9b6f70c0239de8b3c7e82ba 100644 --- a/SOL005/NSFaultManagement-API/Subscriptions.robot +++ b/SOL005/NSFaultManagement-API/Subscriptions.robot @@ -22,32 +22,46 @@ Create a new alarm subscription Check Operation Occurrence Id Check HTTP Response Body Json Schema Is FmSubscription -Create a new alarm subscription - DUPLICATION - [Documentation] Test ID: 5.3.3.3.2 - ... Test title: Create a new alarm subscription - DUPLICATION +# Create a new alarm subscription - DUPLICATION + # [Documentation] Test ID: 5.3.3.3.2 + # ... Test title: Create a new alarm subscription - DUPLICATION + # ... Test objective: The objective is to create a new subscription with the NFV allowing duplication and perform a JSON schema and content validation of the returned fault management alarms subscription data structure.. + # ... Pre-conditions: subscription with the same filter and callbackUri exists + # ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + # ... Config ID: Config_prod_NFVO + # ... Applicability: the NFVO allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists + # ... Post-Conditions: none + # Post Create subscription - DUPLICATION + # Check HTTP Response Status Code Is 201 + # Check Operation Occurrence Id + # Check HTTP Response Body Json Schema Is FmSubscription + +# Create a new alarm subscription - NO DUPLICATION + # [Documentation] Test ID: 5.3.3.3.3 + # ... Test title: Create a new alarm subscription - NO DUPLICATION + # ... Test objective: The objective is to create a new subscription with the NFV not allowing duplication and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. + # ... Pre-conditions: subscription with the same filter and callbackUri exists + # ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 + # ... Config ID: Config_prod_NFVO + # ... Applicability: the NFVO decides to not create a duplicate subscription resource + # ... Post-Conditions: none + # Post Create subscription - NO-DUPLICATION + # Check HTTP Response Status Code Is 303 + # Check Operation Occurrence Id + +Create a duplicated Subscription + [Documentation] Test ID: 5.3.3.3.2a + ... Test title: Create a duplicated alarm subscription ... Test objective: The objective is to create a new subscription with the NFV allowing duplication and perform a JSON schema and content validation of the returned fault management alarms subscription data structure.. ... Pre-conditions: subscription with the same filter and callbackUri exists ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 ... Config ID: Config_prod_NFVO - ... Applicability: the NFVO allows creating a subscription resource if another subscription resource with the same filter and callbackUri already exists + ... Applicability: ... Post-Conditions: none - Post Create subscription - DUPLICATION - Check HTTP Response Status Code Is 201 + POST Subscription + Check Response for duplicated subscription Check Operation Occurrence Id - Check HTTP Response Body Json Schema Is FmSubscription -Create a new alarm subscription - NO DUPLICATION - [Documentation] Test ID: 5.3.3.3.3 - ... Test title: Create a new alarm subscription - NO DUPLICATION - ... Test objective: The objective is to create a new subscription with the NFV not allowing duplication and perform a JSON schema and content validation of the returned fault management alarms subscription data structure. - ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 005 [3] v2.7.1 - ... Config ID: Config_prod_NFVO - ... Applicability: the NFVO decides to not create a duplicate subscription resource - ... Post-Conditions: none - Post Create subscription - NO-DUPLICATION - Check HTTP Response Status Code Is 303 - Check Operation Occurrence Id Retrieve a list of alarm subscriptions [Documentation] Test ID: 5.3.3.3.4 diff --git a/SOL005/NSFaultManagement-API/environment/variables.txt b/SOL005/NSFaultManagement-API/environment/variables.txt index 848b78e970193ceb50e8ddba014533612cdbc515..0ae86d8e17b572b33847990b3eb096a45f5a229f 100644 --- a/SOL005/NSFaultManagement-API/environment/variables.txt +++ b/SOL005/NSFaultManagement-API/environment/variables.txt @@ -18,8 +18,6 @@ ${NFVO_ALLOWS_DUPLICATE_SUBS} 0 ${fields} criteria,objectInstanceIds -${VNFM_ALLOWS_DUPLICATE_SUBS} 0 - ${alarmId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${faultyNestedNsInstanceId} faultyNestedNsInstanceId ${faultyNsVirtualLinkInstanceId} faultyNsVirtualLinkInstanceId diff --git a/SOL005/NSLifecycleManagement-API/ApiVersion.robot b/SOL005/NSLifecycleManagement-API/ApiVersion.robot index 76b1e5d1cc3d8539e41875dcc00f2fd2c7a23bfd..fcbaad59ff89db637ea944711d4994b691cd1b33 100644 --- a/SOL005/NSLifecycleManagement-API/ApiVersion.robot +++ b/SOL005/NSLifecycleManagement-API/ApiVersion.robot @@ -208,6 +208,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK diff --git a/SOL005/NSPerformanceManagement-API/ApiVersion.robot b/SOL005/NSPerformanceManagement-API/ApiVersion.robot index 8b20e5a6798864428d016b1012ce34db83baf0ad..8619b4931bbca15feb15676d42761e41178962d8 100644 --- a/SOL005/NSPerformanceManagement-API/ApiVersion.robot +++ b/SOL005/NSPerformanceManagement-API/ApiVersion.robot @@ -208,6 +208,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot index 3da49c3c07ba132095dab83f43b06472737372e8..d70330ae18223957ebb3c394d5905e552fc4ab74 100644 --- a/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot +++ b/SOL005/NSPerformanceManagement-API/NSPerformanceManagementKeywords.robot @@ -508,7 +508,7 @@ Create Sessions Pass Execution If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 0 MockServer not started as NFVO is not checking the notification endpoint 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} + Create Mock Session ${callback_uri}:${callback_port} Check Notification Endpoint &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} diff --git a/SOL005/NSPerformanceManagement-API/environment/variables.txt b/SOL005/NSPerformanceManagement-API/environment/variables.txt index b2e1aacbd399ad3a594207e9a5e8b921bb1d10d4..ff91e29637d04f79c5554602e32e378838eeaca7 100644 --- a/SOL005/NSPerformanceManagement-API/environment/variables.txt +++ b/SOL005/NSPerformanceManagement-API/environment/variables.txt @@ -18,7 +18,7 @@ ${MOCK_SERVER_JAR} ../../../bin/mockserver-netty-5.5.0-jar-with-dependencies. ${testOptionalMethods} 0 ${callback_port} 9091 -${callback_uri} http://172.22.1.7:${callback_port} +${callback_uri} http://172.22.1.7 ${callback_endpoint} /nspm/subscriptions ${callback_endpoint_error} /subs_404 ${sleep_interval} 20s diff --git a/SOL005/VNFPackageManagement-API/ApiVersion.robot b/SOL005/VNFPackageManagement-API/ApiVersion.robot index 640b20e7c67658b1b08a4b1a569ae04c76a933d7..5dc01749cd3c3df79a27fc35ca94fb7b086c8175 100644 --- a/SOL005/VNFPackageManagement-API/ApiVersion.robot +++ b/SOL005/VNFPackageManagement-API/ApiVersion.robot @@ -207,6 +207,6 @@ Check HTTP Response Status Code Is Check HTTP Response Body Json Schema Is [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json + ${schema} = Catenate SEPARATOR= ${input} .schema.json Validate Json ${schema} ${response['body']} Log Json Schema Validation OK \ No newline at end of file diff --git a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot index 15b7d058e2948749d7b0af37bf04054322bb23bb..f9277de2d4bbe4ce1f880817b8682c5553e676a8 100644 --- a/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot +++ b/SOL005/VNFPackageManagement-API/VNFPackageManagementKeywords.robot @@ -18,7 +18,7 @@ Get all VNF Packages Log Trying to get all VNF Packages present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -50,7 +50,7 @@ GET VNF Packages with attribute-based filter Log Trying to get all VNF Packages present in the NFVO Catalogue, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${POS_FILTER} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${POS_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -65,7 +65,7 @@ GET VNF Packages with invalid attribute-based filter Log Trying to perform a negative get, filtering by the inexistent filter 'nfvId' Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${NEG_FILTER} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?${NEG_FILTER} ${output}= Output response Set Suite Variable ${response} ${output} @@ -75,7 +75,7 @@ Get all VNF Packages with malformed authorization token Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -84,7 +84,7 @@ Get all VNF Packages without authorization token Log The GET method queries omitting token Set Headers {"Accept": "${ACCEPT_JSON}"} Log Execute Query and validate response - Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -92,7 +92,7 @@ GET VNF Packages with all_fields attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using filter params Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?all_fields + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?all_fields ${output}= Output response Set Suite Variable ${response} ${output} @@ -113,7 +113,7 @@ GET VNF Packages with exclude_default attribute selector Log Trying to get all VNF Packages present in the NFVO Catalogue, using exclude_default filter. Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_default + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -132,7 +132,7 @@ GET VNF Packages with fields attribute selector Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?fields=${fields} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -151,7 +151,7 @@ GET VNF Packages with exclude_fields attribute selector Pass Execution If ${NFVO_FIELDS} == 0 The NFVO is not able to use fields parameter Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_fields=${fields} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -169,7 +169,7 @@ GET all VNF Packages with invalid resource endpoint Log Trying to perform a GET on a erroneous URI Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -179,7 +179,7 @@ Send Post Request to create new VNF Package Resource Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body} = Get File jsons/CreateVnfPkgInfoRequest.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${body} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -232,7 +232,7 @@ Check Postcondition VNF Package Resource Exists Log Checking that nsd info exists Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${response['body']['id']} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${response['body']['id']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -242,7 +242,7 @@ Send PUT Request for all VNF Packages Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -250,7 +250,7 @@ Send PATCH Request for all VNF Packages Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -258,7 +258,7 @@ Send DELETE Request for all VNF Packages Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages ${output}= Output response Set Suite Variable ${response} ${output} @@ -266,7 +266,7 @@ GET Individual VNF Package Log Trying to get a VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -279,7 +279,7 @@ GET Individual VNF Package with invalid resource identifier Log Trying to perform a negative get, using wrong authorization bearer Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPackageId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -287,7 +287,7 @@ Send POST Request for individual VNF Package Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -295,7 +295,7 @@ Send PUT Request for individual VNF Package Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -305,7 +305,7 @@ Send PATCH to disable Individual VNF Package Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/VnfPkgInfoModificationsDisabled.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${body} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -320,7 +320,7 @@ Send PATCH to enable Individual VNF Package Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${body}= Get File jsons/VnfPkgInfoModifications.json Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${body} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -328,21 +328,21 @@ Send DELETE Request for individual VNF Package Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${disabledVnfPackageId} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${disabledVnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} Check Postcondition VNF Package is Deleted Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${disabledVnfPackageId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${disabledVnfPackageId} Integer response status 404 Send DELETE Request for Individual VNF Package in operational state ENABLED Log Trying to perform a DELETE nsdInfo in ENABLED operational state Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -354,7 +354,7 @@ Send DELETE Request for Individual VNF Package used for instantiated VNF instanc Log Trying to perform a DELETE nsdInfo in ENABLED operational state Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${instantiatedVnfPackageId} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${instantiatedVnfPackageId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -362,7 +362,7 @@ Get VNFD in Individual VNF Package in Zip Format Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -370,7 +370,7 @@ Get VNFD in Individual VNF Package with security information Log Trying to get a VNFD from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -382,7 +382,7 @@ Get multi file VNFD in Individual VNF Package in Plain Format Log Trying to get a negative case performing a get on a VNFD from a given VNF Package present in the NFVO Catalogue. Accept will be text/plain but VNFD is composed my multiple files. Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -391,7 +391,7 @@ Get VNFD in Individual VNF Package with invalid resource identifier Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -400,7 +400,7 @@ Get VNFD in Individual VNF Package with conflict due to onboarding state Set Headers {"Accept": "${ACCEPT_PLAIN}"} Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -408,7 +408,7 @@ Send POST Request for VNFD in individual VNF Package Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -416,7 +416,7 @@ Send PUT Request for VNFD in individual VNF Package Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -424,7 +424,7 @@ Send PATCH Request for VNFD in individual VNF Package Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -432,7 +432,7 @@ Send DELETE Request for VNFD in individual VNF Package Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgZipVNFD}/vnfd ${output}= Output response Set Suite Variable ${response} ${output} @@ -440,7 +440,7 @@ GET Individual VNF Package Content Log Trying to get a VNF Package Content Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -454,7 +454,7 @@ GET Individual VNF Package Content with Range Request Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -476,7 +476,7 @@ GET Individual VNF Package Content with invalid Range Request Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -484,7 +484,7 @@ GET Individual VNF Package Content with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/package_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -492,7 +492,7 @@ GET Content for VNF Package in onboarding state different from ONBOARDED Log Trying to get a VNF Package content present in the NFVO Catalogue, but not in ONBOARDED operationalStatus Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -500,7 +500,7 @@ Send POST Request for individual VNF Package Content Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -508,7 +508,7 @@ Send PUT Request for individual VNF Package Content Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -526,7 +526,7 @@ Check Postcondition VNF Package Content is uploaded and available in the NFVO Log Trying to get a VNF Package Content Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${newVnfPackageId}/package_content + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${newVnfPackageId}/package_content Integer response status 200 Send PUT Request to upload VNF Package Content with conflict due to onboarding state @@ -542,7 +542,7 @@ Send PATCH Request for individual VNF Package Content Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} @@ -550,21 +550,21 @@ Send DELETE Request for individual VNF Package Content Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/package_content ${output}= Output response Set Suite Variable ${response} ${output} GET Individual VNF Package Artifact Log Trying to get a VNF Package Artifact Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Individual VNF Package Artifact in octet stream format Log Trying to get a VNF Package Artifact Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageOctetStreamId}/artifacts/${artifactPath} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageOctetStreamId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -573,7 +573,7 @@ GET Individual VNF Package Artifact with Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -583,21 +583,21 @@ GET Individual VNF Package Artifact with invalid Range Request Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Individual VNF Package Artifact with invalid resource identifier Log Trying to perform a negative get, using an erroneous package ID Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/artifacts/${artifactPath} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${erroneousVnfPkgId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} GET Artifact for VNF Package in onboarding state different from ONBOARDED Log Trying to get a VNF Package artifact present in the NFVO Catalogue, but not in ONBOARDED operationalStatus Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -605,7 +605,7 @@ Send POST Request for individual VNF Package Artifact Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -613,7 +613,7 @@ Send PUT Request for individual VNF Package Artifact Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -621,7 +621,7 @@ Send PATCH Request for individual VNF Package Artifact Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -629,7 +629,7 @@ Send DELETE Request for individual VNF Package Artifact Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/${artifactPath} ${output}= Output response Set Suite Variable ${response} ${output} @@ -639,7 +639,7 @@ Send POST Request to upload VNF Package Content from URI Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/UploadVnfPkgFromUriRequest.json ${body}= Format String ${template} vnfPkgUri=${vnfPkgUri} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${body} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -649,7 +649,7 @@ Send POST Request to upload VNF Package Content from URI with conflict due to on Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${template}= Get File jsons/UploadVnfPkgFromUriRequest.json ${body}= Format String ${template} vnfPkgUri=${vnfPkgUri} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${creatingVnfPkgViaUriId}/package_content/upload_from_uri ${body} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${creatingVnfPkgViaUriId}/package_content/upload_from_uri ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -657,7 +657,7 @@ Send GET Request for individual VNF Package Content from URI Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -665,7 +665,7 @@ Send PUT Request for individual VNF Package Content from URI Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -673,7 +673,7 @@ Send PATCH Request for individual VNF Package Content from URI Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -681,7 +681,7 @@ Send DELETE Request for individual VNF Package Content from URI Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgViaUriId}/package_content/upload_from_uri ${output}= Output response Set Suite Variable ${response} ${output} @@ -689,7 +689,7 @@ Get all VNF Package Subscriptions Log Trying to get the list of subscriptions Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -697,7 +697,7 @@ Get VNF Package Subscriptions with attribute-based filters Log Trying to get the list of subscriptions using filters Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -705,7 +705,7 @@ Get VNF Package Subscriptions with invalid attribute-based filters Log Trying to get the list of subscriptions using filters with wrong attribute name Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -713,7 +713,7 @@ Get VNF Package Subscriptions with invalid resource endpoint Log Trying to perform a request on a Uri which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscription ${output}= Output response Set Suite Variable ${response} ${output} @@ -723,9 +723,9 @@ Send Post Request for VNF Package Subscription Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${check_descriptors} == 1 PARSE the Descriptor File ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersions=${Descriptor_Version} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} vnfdId=${Descriptor_ID} vnfProvider=${Provider} vnfProductName=${Product_Name} vnfSoftwareVersion=${Software_Version} vnfdVersions=${Descriptor_Version} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} Run Keyword If ${NFVO_CHECKS_NOTIF_ENDPOINT} == 1 @@ -736,9 +736,9 @@ Send Post Request for Duplicated VNF Package Subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -746,7 +746,7 @@ Send Put Request for VNF Package Subscriptions Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -754,7 +754,7 @@ Send Patch Request for VNF Package Subscriptions Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -762,14 +762,14 @@ Send Delete Request for VNF Package Subscriptions Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Body PkgmSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal ${response['body']['callbackUri']} ${subscription['callbackUri']} @@ -781,9 +781,9 @@ Check Postcondition VNF Package Subscription Is Set Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} Run Keyword If ${location} == Location - ... GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} + ... REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${response['body']['id']} Run Keyword If ${location} == Location - ... GET ${response['headers']['Location']} + ... REST.GET ${response['headers']['Location']} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 200 @@ -791,7 +791,7 @@ Check Postcondition VNF Package Subscription Is Set Check Postcondition Subscription Resource Returned in Location Header Is Available Log Going to check postcondition Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${response['headers']['Location']} + REST.GET ${response['headers']['Location']} Integer response status 200 Log Received a 200 OK as expected ${contentType}= Output response headers Content-Type @@ -800,7 +800,7 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab Validate Json PkgmSubscription.schema.json ${result} Log Validated PkgmSubscription schema ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal ${result['callbackUri']} ${subscription['callbackUri']} Log Validated Issued subscription is same as original @@ -809,7 +809,7 @@ Get Individual VNF Package Subscription Log Trying to get a single subscription identified by subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -817,7 +817,7 @@ GET individual VNF Package Subscription with invalid resource identifier Log Trying to perform a request on a subscriptionID which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -825,7 +825,7 @@ Send Delete request for individual VNF Package Subscription Log Trying to perform a DELETE on a subscriptionId Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -838,31 +838,31 @@ Send Delete request for individual VNF Package Subscription with invalid resourc Log Trying to perform a DELETE on a subscriptionId which doesn't exist Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for individual VNF Package Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for individual VNF Package Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Patch request for individual VNF Package Subscription Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -878,7 +878,7 @@ Check Postcondition VNF Package Subscription is not Created Log Trying to get a new subscription Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Check HTTP Response Status Code Is 404 @@ -927,7 +927,7 @@ Match the Response Attributes of PkgmSubscription with Descriptors Should Be Equal As Strings ${response['body']['filter']['vnfProductsFromProviders']['vnfProducts']['vnfProductName']['versions']['vnfdVersion']} ${Descriptor_Version} Check Notification Endpoint - &{notification_request}= Create Mock Request Matcher GET ${callback_endpoint} + &{notification_request}= Create Mock Request Matcher REST.GET ${callback_endpoint} &{headers} = Create Dictionary Content-Type=application/json &{notification_response}= Create Mock Response headers=${headers} status_code=204 Create Mock Expectation ${notification_request} ${notification_response} @@ -937,7 +937,7 @@ Check Notification Endpoint Check HTTP Response Body Matches the Subscription Log Check Response matches subscription ${template}= Get File jsons/subscriptions.json - ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} + ${body}= Format String ${template} callback_uri=${callback_uri}:${callback_port} callback_endpoint=${callback_endpoint} vnfPkgId=${vnfPkgId} ${subscription}= evaluate json.loads('''${body}''') json Should Be Equal As Strings ${response['body']['callbackUri']} ${subscription['callbackUri']} @@ -956,7 +956,7 @@ Check HTTP Response Header Contains Location Get access configuration information for external artifacts Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${output}= Output response Set Suite Variable ${response} ${output} @@ -964,7 +964,7 @@ Send PUT Request to access configuration information for external artifacts Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} ${body}= Get File jsons/ExternalArtifactsAccessConfig.json - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${body} + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${body} ${output}= Output response Set Suite Variable ${response} ${output} @@ -978,7 +978,7 @@ Send POST Request for access configuration for external artifacts Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${output}= Output response Set Suite Variable ${response} ${output} @@ -986,7 +986,7 @@ Send PATCH Request for access configuration for external artifacts Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${output}= Output response Set Suite Variable ${response} ${output} @@ -994,14 +994,14 @@ Send DELETE Request for Access configuration for external artifacts Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/ext_artifacts_access ${output}= Output response Set Suite Variable ${response} ${output} Get Manifest in Individual VNF Package in plainFormat Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1009,14 +1009,14 @@ Get Manifest in Individual VNF Package with security information Log Trying to get a manifest from a given VNF Package present in the NFVO Catalogue Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest/include_signatures + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} Get Manifest in Individual VNF Package with unacceptable request Set Headers {"Accept": "${ACCEPT_PLAIN}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest/include_signatures + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1024,7 +1024,7 @@ Send POST Request for manifest in individual VNF Package Log Trying to perform a POST. This method should not be implemented Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1032,7 +1032,7 @@ Send PUT Request for manifest in individual VNF Package Log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1040,7 +1040,7 @@ Send PATCH Request for manifest in individual VNF Package Log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1048,7 +1048,7 @@ Send DELETE Request for manifest in individual VNF Package Log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPkgId}/manifest ${output}= Output response Set Suite Variable ${response} ${output} @@ -1056,7 +1056,7 @@ Get Artifact in VNF Package Log Trying to get Artifact in VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1064,7 +1064,7 @@ Get Artifact in VNF Package with exclude_all_mano_artifacts parameter Log Trying to get Artifact in VNF Package with exclude_all_mano_artifacts Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1072,7 +1072,7 @@ Get Artifact in VNF Package with exclude_all_non_mano_artifacts parameter Log Trying to get Artifact in VNF Package with security certificates Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1081,7 +1081,7 @@ Get Artifact in VNF Package with select_non_mano_artifact_sets parameter Pass Execution If ${NFVO_non-MANO_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/select_non_mano_artifact_sets=${non_mano_artifact_sets} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1089,7 +1089,7 @@ Get Artifact in VNF Package with include_signatures parameter Log Trying to get Artifact in VNF Package with security certificates Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/include_signatures ${output}= Output response Set Suite Variable ${response} ${output} @@ -1098,7 +1098,7 @@ Get Artifact in VNF Package with Range Request Pass Execution If ${NFVO_RANGE_OK} == 0 Skipping this test as NFVO is not able to handle partial Requests. Set Headers {"Range": "${range}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1106,7 +1106,7 @@ Get Artifact in VNF Package with exclude_all_non_mano_artifacts and select_non_m Log Trying to get Artifact in VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&select_non_mano_artifact_sets=${non_mano_artifact_sets} + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&select_non_mano_artifact_sets=${non_mano_artifact_sets} ${output}= Output response Set Suite Variable ${response} ${output} @@ -1114,14 +1114,14 @@ Get Artifact in VNF Package with exclude_all_non_mano_artifacts and exclude_all_ Log Trying to get Artifact in VNF Package Set Headers {"Accept": "${ACCEPT_ZIP}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&exclude_all_non_mano_artifacts + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts/exclude_all_non_mano_artifacts&exclude_all_non_mano_artifacts ${output}= Output response Set Suite Variable ${response} ${output} GET Artifact of VNF Package in onboarding state different from ONBOARDED Log Trying to get a VNF Package artifact present in the NFVO Catalogue, but not in ONBOARDED operationalStatus Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${onboardingStateVnfPkgId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1131,7 +1131,7 @@ GET VNF Package Artifact with invalid Range Request Set Headers {"Accept": "${ACCEPT_ZIP}"} Set Headers {"Range": "${erroneousRange}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + REST.GET ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1139,7 +1139,7 @@ Send POST Request for VNF Package Artifact Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + REST.POST ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1147,7 +1147,7 @@ Send PUT Request for VNF Package Artifact Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + REST.PUT ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1155,7 +1155,7 @@ Send PATCH Request for VNF Package Artifact Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + REST.PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response Set Suite Variable ${response} ${output} @@ -1163,6 +1163,6 @@ Send DELETE Request for VNF Package Artifact Log Trying to perform a DELETE (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} - DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts + REST.DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_packages/${vnfPackageId}/artifacts ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file + Set Suite Variable ${response} ${output} diff --git a/indexes/sol_002_index.csv b/indexes/sol_002_index.csv index 185a584170117ece09924f05188df5c625438c06..f3f3a78f34d8613d80b8e9efd9211aeb530f3bfe 100644 --- a/indexes/sol_002_index.csv +++ b/indexes/sol_002_index.csv @@ -1,52 +1,52 @@ -"6, Ve-Vnfm Reference Point, SOL002 " -"6.3.1, VNF Configuration Interface , VNFConfiguration-API " -"6.3.1.1, Configuration Resource Endpoint , Configuration.robot" -6.3.1.2,API Version Resource Endpoint, ApiVersion.robot -"6.3.2, VNF Indicator Interface , VNFIndicator-API" -"6.3.2.1, VNF Indicators Resource Endpoint , VNFIndicators.robot" -"6.3.2.2, VNF Indicators related to a VNF Instance Resource Endpoint , VnfIndicatorsInVnfInstanceId.robot " -"6.3.2.3, Individual VNF Indicator Resource Endpoit,IndividualVNFindicator.robot" -"6.3.2.4, Subscriptions Resource Endpoint , Subscriptions.robot" -"6.3.2.5, Individual Subscription Resource Endpoint , IndividualSubscription.robot" -"6.3.2.6, Notification Endpoint , ../VNFIndicatorNotification-API/VnfIndicatorNotification.robot" -6.3.2.7,API Version Resource Endpoint, ApiVersion.robot -"6.3.3, VNF Performance Management Interface , VNFPerformanceManagement-API" -"6.3.3.1, PM Jobs Resource Endpoint , PMJobs.robot " -"6.3.3.2, Individual PM Job Resource Endpoint , IndividualPmJob.robot " -"6.3.3.3, Individual Performance Report Resource Endpoint , IndividualReport.robot" -"6.3.3.4, Thresholds Resource Endpoint , Thresholds.robot" -"6.3.3.5, Individual Threshold Resource Endpoint , IndividualThreshold.robot " -"6.3.3.8, Notification Endpoint , ../VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot " -6.3.3.9,API Version Resource Endpoint, ApiVersion.robot -6.3.3.10, Notification Consumer Endpoint , ../VNFPerformanceManagement-API/NotificationConsumer.robot -"6.3.4, VNF Fault Management interface , VNFFaultManagement-API" -"6.3.4.1, Alarms , Alarms.robot " -"6.3.4.2, Individual Alarm , IndividualAlarm.robot" -"6.3.4.3, Escalate the perceived severity , EscalatePerceivedSeverityTask.robot" -"6.3.4.4, Subscriptions , Subscriptions.robot" -"6.3.4.5, Individual Subscription , IndividualSubscription.robot" -"6.3.4.6, Notification Endpoint , NotificationEndpoint.robot" -6.3.4.7,API Version Resource Endpoint, ApiVersion.robot -6.3.4.8, Notification Consumer Endpoint , NotificationConsumer.robot -"6.3.5, VNF Lifecycle Management interface , VNFLifecycleManagement-API" -"6.3.5.1, VNF Instances , VNFInstances.robot" -"6.3.5.2, Individual VNFInstance , IndividualVNFInstance.robot " -"6.3.5.3, Instantiate VNF Task , InstantiateVNFTask.robot" -"6.3.5.4, Scale VNF Task , ScaleVNFTask.robot " -"6.3.5.5, Scale a VNF to level Task , ScaleVNFToLevelTask.robot " -"6.3.5.6, Change VNF deployment flavour Task , ChangeVNFFlavourTask.robot " -"6.3.5.7, Terminate VNF Task , TerminateVNFTask.robot" -"6.3.5.8, Heal VNF Task , HealVNFTask.robot " -"6.3.5.9, Operate VNF Task , OperateVNFTask.robot" -"6.3.5.10, Change external VNF connectivity , ChangeExternalVNFConnectivityTask.robot " -"6.3.5.11, VNF LCM OP occurrences , VnfLcmOperationOccurences.robot" -"6.3.5.12, Individual VNF LCM OP occurrence , IndividualVnfLcmOperationOccurence.robot " -"6.3.5.13, Retry operation task , RetryOperationTask.robot" -"6.3.5.14, Rollback operation task , RollbackOperationTask.robot " -"6.3.5.15, Fail operation task , FailOperationTask.robot " -"6.3.5.16, Cancel operation task , CancelOperationTask.robot" -"6.3.5.17, Subscriptions , Subscriptions.robot" -"6.3.5.18, Individual Subscription , IndividualSubscription.robot" -"6.3.5.19, Notification Endpoint , NotificationEndpoint.robot" -6.3.5.20,API Version Resource Endpoint, ApiVersion.robot -6.3.5.21, Notification Consumer Endpoint , NotificationConsumer.robot +6,Ve-Vnfm Reference Point, SOL002 +6.3.1,VNF Configuration Interface,VNFConfiguration-API +6.3.1.1,Configuration Resource Endpoint,Configuration.robot +6.3.1.2,API Version Resource Endpoint,ApiVersion.robot +6.3.2, VNF Indicator Interface,VNFIndicator-API +6.3.2.1,VNF Indicators Resource Endpoint,VNFIndicators.robot +6.3.2.2,VNF Indicators related to a VNF Instance Resource Endpoint,VnfIndicatorsInVnfInstanceId.robot +6.3.2.3,Individual VNF Indicator Resource Endpoit,IndividualVNFindicator.robot +6.3.2.4,Subscriptions Resource Endpoint,Subscriptions.robot +6.3.2.5,Individual Subscription Resource Endpoint,IndividualSubscription.robot +6.3.2.6,Notification Endpoint,../VNFIndicatorNotification-API/VnfIndicatorNotification.robot +6.3.2.7,API Version Resource Endpoint,ApiVersion.robot +6.3.3,VNF Performance Management Interface,VNFPerformanceManagement-API +6.3.3.1,PM Jobs Resource Endpoint,PMJobs.robot +6.3.3.2,Individual PM Job Resource Endpoint,IndividualPmJob.robot +6.3.3.3,Individual Performance Report Resource Endpoint,IndividualReport.robot +6.3.3.4,Thresholds Resource Endpoint,Thresholds.robot +6.3.3.5,Individual Threshold Resource Endpoint,IndividualThreshold.robot +6.3.3.8,Notification Endpoint,../VNFPerformanceManagementNotification-API/PerformanceManagementNotification.robot +6.3.3.9,API Version Resource Endpoint,ApiVersion.robot +6.3.3.10, Notification Consumer Endpoint,../VNFPerformanceManagement-API/NotificationConsumer.robot +6.3.4,VNF Fault Management interface,VNFFaultManagement-API +6.3.4.1,Alarms,Alarms.robot +6.3.4.2,Individual Alarm,IndividualAlarm.robot +6.3.4.3,Escalate the perceived severity,EscalatePerceivedSeverityTask.robot +6.3.4.4,Subscriptions,Subscriptions.robot +6.3.4.5,Individual Subscription,IndividualSubscription.robot +6.3.4.6,Notification Endpoint,NotificationEndpoint.robot +6.3.4.7,API Version Resource Endpoint,ApiVersion.robot +6.3.4.8,Notification Consumer Endpoint,NotificationConsumer.robot +6.3.5,VNF Lifecycle Management interface,VNFLifecycleManagement-API +6.3.5.1,VNF Instances,VNFInstances.robot +6.3.5.2,Individual VNFInstance,IndividualVNFInstance.robot +6.3.5.3,Instantiate VNF Task,InstantiateVNFTask.robot +6.3.5.4,Scale VNF Task,ScaleVNFTask.robot +6.3.5.5,Scale a VNF to level Task,ScaleVNFToLevelTask.robot +6.3.5.6,Change VNF deployment flavour Task,ChangeVNFFlavourTask.robot +6.3.5.7,Terminate VNF Task,TerminateVNFTask.robot +6.3.5.8,Heal VNF Task,HealVNFTask.robot +6.3.5.9,Operate VNF Task,OperateVNFTask.robot +6.3.5.10,Change external VNF connectivity,ChangeExternalVNFConnectivityTask.robot +6.3.5.11,VNF LCM OP occurrences,VnfLcmOperationOccurences.robot +6.3.5.12,Individual VNF LCM OP occurrence,IndividualVnfLcmOperationOccurence.robot +6.3.5.13,Retry operation task,RetryOperationTask.robot +6.3.5.14,Rollback operation task,RollbackOperationTask.robot +6.3.5.15,Fail operation task,FailOperationTask.robot +6.3.5.16,Cancel operation task,CancelOperationTask.robot +6.3.5.17,Subscriptions,Subscriptions.robot +6.3.5.18,Individual Subscription,IndividualSubscription.robot +6.3.5.19,Notification Endpoint,NotificationEndpoint.robot +6.3.5.20,API Version Resource Endpoint,ApiVersion.robot +6.3.5.21,Notification Consumer Endpoint,NotificationConsumer.robot diff --git a/indexes/sol_005_index.csv b/indexes/sol_005_index.csv index 97b601390c3b7f396ccf14c933b6f36b76ecf4ae..31fcb08ef5bd92b99a37767fad052c4c748abee4 100644 --- a/indexes/sol_005_index.csv +++ b/indexes/sol_005_index.csv @@ -1,71 +1,73 @@ -5,Os-Ma-Nfvo Reference Point, SOL005 -5.3.1,NSD Management interface, NSDManagement-API -5.3.1.1,Network Service Descriptors Resource Endpoint, NSDescriptors.robot -5.3.1.2,Individual NS Descriptor Resource Endpoint , IndividualNSDescriptor.robot -5.3.1.3,NSD Content Resource Endpoint, NSDContent.robot -5.3.1.4,PNF Descriptors Resource Endpoint, PNFDescriptors.robot -5.3.1.5,Individual PNF Descriptor Resource Endpoint, IndividualPnfDescriptor.robot -5.3.1.6,PNFD Content Resource Endpoint, PNFDContent.robot -5.3.1.7,Subscriptions Resource Endpoint, Subscriptions.robot -5.3.1.8,Individual Subscription Resource Endpoint, IndividualSubscription.robot -5.3.1.9,Notifications Endpoint, NSDManagementNotification.robot -5.3.1.10,API Version Resource Endpoint, ApiVersion.robot -5.3.1.11,Notifications Consumer Endpoint, NotificationConsumer.robot -5.3.2,NS Lifecycle Management interface, NSLifecycleManagement-API -5.3.2.1,NsInstances, NSInstances.robot -5.3.2.2,Individual NSInstance, IndividualNSInstance.robot -5.3.2.3,Instantiate NS Task, InstantiateNSTask.robot -5.3.2.4,Scale a nsInstance, ScaleNSTask.robot -5.3.2.5,Update a NSInstance, UpdateNSTask.robot -5.3.2.6,Heal a NSInstance, HealNSTask.robot -5.3.2.7,Terminate a NSInstance, TerminateNSTask.robot -5.3.2.8,NS LCM occurrences, NSLCMOccurences.robot -5.3.2.9,Individual NS LCM Occurences, IndividualNSLCMOccurences.robot -5.3.2.10, Retry operation task, RetryOperationTask.robot -5.3.2.11, Rollback operation task, RollbackOperationTask.robot -5.3.2.12,Continue operation task, ContinueOperationTask.robot -5.3.2.13,Fail operation task, FailOperationTask.robot -5.3.2.14,Cancel operation task, CancelOperationTask.robot -5.3.2.15,Subscriptions, Subscriptions.robot -5.3.2.16,Individual Subscription, IndividualSubscription.robot -5.3.2.17,Notification Endpoint, NotificationEndpoint.robot -5.3.2.18,NS Instance Creation Workflow, CreateNSInstanceWorkflow.robot -5.3.2.19, NS Instance Deletion, DeleteNSInstanceWorkflow.robot -5.3.2.20, Heal Flow of NS lifecycle management operations, HealNSTaskWorkflow.robot -5.3.2.21, Instantiate Flow of NS lifecycle management operations, InstanciateNSTaskWorkflow.robot -5.3.2.22, Scale Flow of NS lifecycle management operations, ScaleNSTaskWorkflow.robot -5.3.2.23, Terminate Flow of NS lifecycle management operations, TerminateNSTaskWorkflow.robot -5.3.2.24, Update Flow of NS lifecycle management operations, UpdateNSTaskWorkflow.robot -5.3.2.25,API Version Resource Endpoint, ApiVersion.robot -5.3.2.26,Notification Consumer Endpoint, NotificationConsumer.robot -5.3.3,NS Fault Management interface, NSFaultManagement-API -5.3.3.1,Alarms, Alarms.robot -5.3.3.2,Individual Alarm, IndividualAlarm.robot -5.3.3.3,Subscriptions, Subscriptions.robot -5.3.3.4,Individual Subscription, IndividualSubscription.robot -5.3.3.5,Notification Endpoint, NotificationEndpoint.robot -5.3.3.6,API Version Resource Endpoint, ApiVersion.robot -5.3.3.7,Notification Consumer Endpoint, NotificationConsumer.robot -5.3.4,NS Performance Management interface, NSPerformanceManagement-API -5.3.4.1,PM Jobs Resource Endpoint, PMJobs.robot -5.3.4.2,Individual PM Job Resource Endpoint, IndividualPmJob.robot -5.3.4.3,Individual Performance Report Resource Endpoint, IndividualReport.robot -5.3.4.4,Thresholds Resource Endpoint, Thresholds.robot -5.3.4.5,Individual Threshold Resource Endpoint, IndividualThreshold.robot -5.3.4.6,Subscriptions Resource Endpoint, Subscriptions.robot -5.3.4.7,Individual Subscription Resource Endpoint, IndividualSubscription.robot -5.3.4.8,Notifications Endpoint, Notifications.robot -5.3.4.9,API Version Resource Endpoint, ApiVersion.robot -5.3.4.10,Notifications Consumer Endpoint, NotificationConsumer.robot -5.3.5,VNF Package Management interface, VNFPackageManagement-API -5.3.5.1,VNF Packages Resource Endpoint, VNFPackages.robot -5.3.5.2,Individual VNF Package Resource Endpoint, IndividualVNFPackage.robot -5.3.5.3,VNFD In Individual VNF Package Resource Endpoint, VNFDInIndividualVNFPackage.robot -5.3.5.4,VNF Package Content Resource Endpoint, VNFPackageContent.robot -5.3.5.5,Upload VNF Package From URI Resource Endpoint, VNFPackageContentViaURI.robot -5.3.5.6,Individual VNF Package Artifact Resource Endpoint, VNFPackageArtifacts.robot -5.3.5.7,Subscriptions Resource Endpoint, Subscriptions.robot -5.3.5.8,Individual Subscription Resource Endpoint, IndividualSubscription.robot -5.3.5.9,Notifications Endpoint, Notifications.robot -5.3.5.10,API Version Resource Endpoint, ApiVersion.robot -5.3.5.11,Notifications Consumer Endpoint, NotificationConsumer.robot +5,Os-Ma-Nfvo Reference Point, SOL005 +5.3.1,NSD Management interface, NSDManagement-API +5.3.1.1,Network Service Descriptors Resource Endpoint, NSDescriptors.robot +5.3.1.2,Individual NS Descriptor Resource Endpoint , IndividualNSDescriptor.robot +5.3.1.3,NSD Content Resource Endpoint, NSDArchiveContent.robot +5.3.1.4,PNF Descriptors Resource Endpoint, PNFDescriptors.robot +5.3.1.5,Individual PNF Descriptor Resource Endpoint, IndividualPnfDescriptor.robot +5.3.1.6,PNFD Content Resource Endpoint, PNFDArchiveContent.robot +5.3.1.7,Subscriptions Resource Endpoint, Subscriptions.robot +5.3.1.8,Individual Subscription Resource Endpoint, IndividualSubscription.robot +5.3.1.9,Notifications Endpoint, NSDManagementNotification.robot +5.3.1.10,API Version Resource Endpoint, ApiVersion.robot +5.3.1.11,NSD Resource Endpoint, NSD.robot +5.3.1.12,NSD Archive Manifest Resource Endpoint, NSDArchiveManifest.robot +5.3.1.13,PNFD Resource Endpoint, PNFD.robot +5.3.1.14,PNFD Archive Manifest Resource Endpoint, PNFDArchiveManifest.robot +5.3.1.15,Notifications Consumer Endpoint, NotificationConsumer.robot +5.3.2,NS Lifecycle Management interface, NSLifecycleManagement-API +5.3.2.1,NsInstances, NSInstances.robot +5.3.2.2,Individual NSInstance, IndividualNSInstance.robot +5.3.2.3,Instantiate NS Task, InstantiateNSTask.robot +5.3.2.4,Scale a nsInstance, ScaleNSTask.robot +5.3.2.5,Update a NSInstance, UpdateNSTask.robot +5.3.2.6,Heal a NSInstance, HealNSTask.robot +5.3.2.7,Terminate a NSInstance, TerminateNSTask.robot +5.3.2.8,NS LCM occurrences, NSLCMOccurences.robot +5.3.2.9,Individual NS LCM Occurences, IndividualNSLCMOccurences.robot +5.3.2.10, Retry operation task, RetryOperationTask.robot +5.3.2.11, Rollback operation task, RollbackOperationTask.robot +5.3.2.12,Continue operation task, ContinueOperationTask.robot +5.3.2.13,Fail operation task, FailOperationTask.robot +5.3.2.14,Cancel operation task, CancelOperationTask.robot +5.3.2.15,Subscriptions, Subscriptions.robot +5.3.2.16,Individual Subscription, IndividualSubscription.robot +5.3.2.17,Notification Endpoint, NotificationEndpoint.robot +5.3.2.18,NS Instance Creation Workflow, CreateNSInstanceWorkflow.robot +5.3.2.19, NS Instance Deletion, DeleteNSInstanceWorkflow.robot +5.3.2.20, Heal Flow of NS lifecycle management operations, HealNSTaskWorkflow.robot +5.3.2.21, Instantiate Flow of NS lifecycle management operations, InstanciateNSTaskWorkflow.robot +5.3.2.22, Scale Flow of NS lifecycle management operations, ScaleNSTaskWorkflow.robot +5.3.2.23, Terminate Flow of NS lifecycle management operations, TerminateNSTaskWorkflow.robot +5.3.2.24, Update Flow of NS lifecycle management operations, UpdateNSTaskWorkflow.robot +5.3.2.25,API Version Resource Endpoint, ApiVersion.robot +5.3.2.26,Notification Consumer Endpoint, NotificationConsumer.robot +5.3.3,NS Fault Management interface, NSFaultManagement-API +5.3.3.1,Alarms, Alarms.robot +5.3.3.2,Individual Alarm, IndividualAlarm.robot +5.3.3.3,Subscriptions, Subscriptions.robot +5.3.3.4,Individual Subscription, IndividualSubscription.robot +5.3.3.5,Notification Endpoint, NotificationEndpoint.robot +5.3.3.6,API Version Resource Endpoint, ApiVersion.robot +5.3.3.7,Notification Consumer Endpoint, NotificationConsumer.robot +5.3.4,NS Performance Management interface, NSPerformanceManagement-API +5.3.4.1,PM Jobs Resource Endpoint, PMJobs.robot +5.3.4.2,Individual PM Job Resource Endpoint, IndividualPmJob.robot +5.3.4.3,Individual Performance Report Resource Endpoint, IndividualReport.robot +5.3.4.4,Thresholds Resource Endpoint, Thresholds.robot +5.3.4.5,Individual Threshold Resource Endpoint, IndividualThreshold.robot +5.3.4.8,Notifications Endpoint, Notifications.robot +5.3.4.9,API Version Resource Endpoint, ApiVersion.robot +5.3.4.10,Notifications Consumer Endpoint, NotificationConsumer.robot +5.3.5,VNF Package Management interface, VNFPackageManagement-API +5.3.5.1,VNF Packages Resource Endpoint, VNFPackages.robot +5.3.5.2,Individual VNF Package Resource Endpoint, IndividualVNFPackage.robot +5.3.5.3,VNFD In Individual VNF Package Resource Endpoint, VNFDInIndividualVNFPackage.robot +5.3.5.4,VNF Package Content Resource Endpoint, VNFPackageContent.robot +5.3.5.5,Upload VNF Package From URI Resource Endpoint, VNFPackageContentViaURI.robot +5.3.5.6,Individual VNF Package Artifact Resource Endpoint, VNFPackageArtifacts.robot +5.3.5.7,Subscriptions Resource Endpoint, Subscriptions.robot +5.3.5.8,Individual Subscription Resource Endpoint, IndividualSubscription.robot +5.3.5.9,Notifications Endpoint, Notifications.robot +5.3.5.10,API Version Resource Endpoint, ApiVersion.robot +5.3.5.11,Notifications Consumer Endpoint, NotificationConsumer.robot diff --git a/requirements.txt b/requirements.txt index f6c9c6d5d9f3a94b2c68443081cb17d0d38ba9f2..bafc102d3843316cb6cca0a589fffb5deb65e8f5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ -###### List of required python libraries ###### ## To install the libraries, use: # pip -r requirements.txt @@ -8,5 +7,5 @@ RESTinstance==1.0.0rc4 robotframework-dependencylibrary==1.0.0.post1 robotframework-jsonlibrary==0.3 robotframework-jsonschemalibrary==1.0 -robotframework-mockserver==0.0.4 +robotframework-mockserver==0.0.7 robotframework-requests==0.7.1 diff --git a/scripts/docker/Dockerfile b/scripts/docker/Dockerfile index de313e6dbf5666f5428defa33027f68d14d9f926..9f753df87329ee5f9811c52fab79cee8e0018b36 100644 --- a/scripts/docker/Dockerfile +++ b/scripts/docker/Dockerfile @@ -12,12 +12,10 @@ ARG ssh_prv_key RUN DEBIAN_FRONTEND=noninteractive apt update \ && apt install python3 git -y \ && apt install python3-pip -y \ - && apt install openssh-server -y \ && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ && rm -rf /var/lib/apt/lists/* - RUN echo "docker-robot-STF583" > /etc/hostname \ && echo "root:etsi" | chpasswd @@ -26,27 +24,35 @@ RUN useradd --create-home --shell /bin/bash --user-group etsi --groups sudo \ && adduser etsi sudo \ && echo "etsi ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers - RUN DEBIAN_FRONTEND=noninteractive \ && mkdir -p /home/etsi/dev/robot \ && cd /home/etsi/dev/robot -RUN pip3 install robotframework +#RUN pip3 install robotframework -RUN DEBIAN_FRONTEND=noninteractive \ - && cd /home/etsi/dev/robot \ - && git clone https://github.com/etsi-cti-admin/robotframework-mockserver +ADD requirements.txt /home/etsi/dev/robot/ +ADD extensions /home/etsi/dev/robot/extensions -ADD . /home/etsi/dev/robot +RUN ls /home/etsi/dev/robot -RUN DEBIAN_FRONTEND=noninteractive \ - && cd /home/etsi/dev/robot \ + +RUN DEBIAN_FRONTED=noninteractive \ + cd /home/etsi/dev/ \ + mkdir -p build \ + && git clone https://forge.etsi.org/rep/forge-tools/robot2doc.git \ + && cd robot2doc \ && pip3 install -r requirements.txt \ - && chmod +x /home/etsi/dev/robot/scripts/* \ - && cd robotframework-mockserver \ - && patch -p1 < ../extensions/mockserverlibrary.patch \ && python3 -m pip install -e . +RUN DEBIAN_FRONTEND=noninteractive \ + && cd /home/etsi/dev/robot \ + && pip3 install -r requirements.txt + + +ADD . /home/etsi/dev/robot + +RUN chmod +x /home/etsi/dev/robot/scripts/* + CMD tail -f /dev/null diff --git a/scripts/run-container.sh b/scripts/run-container.sh index 089cd2d8694ae7be69bb82fb5d9f36a26e5fe9c1..c0ea09699ff44dd9ef5ee6e29b2564683f7a7099 100644 --- a/scripts/run-container.sh +++ b/scripts/run-container.sh @@ -5,7 +5,9 @@ #set -e #set -vx -docker run stf583-rf-validation:latest "bash" \ +mkdir -p build + +docker run -v "$(pwd)/build:/home/etsi/dev/build" stf583-rf-validation:latest "bash" \ -c "/home/etsi/dev/robot/scripts/validate.sh" ret=$? diff --git a/scripts/validate.sh b/scripts/validate.sh index ef8b7753101f957bcf04da2355333db8cab97529..ae06e2ea0e0d328935f8d4de143093ff075d95c1 100644 --- a/scripts/validate.sh +++ b/scripts/validate.sh @@ -17,4 +17,11 @@ for i in */*/*.robot ; do fi done -exit $res +cd /home/etsi/dev/robot2doc/robot2doc + +mkdir -p /home/etsi/dev/build + +python3 create_sols.py ../../robot 'local' ../../build +res2=$? + +exit $res && $res2